Python中函数的介绍

在Python中,函数的三个要素是:函数名+参数+返回值

函数名:函数名是函数的标识符,用于唯一标识函数。在定义函数时,需要给函数一个名字,以便后续调用和引用。函数名应遵循命名规则,例如以字母或下划线开头,由字母、数字或下划线组成。命名规范可参考官网的PEP 8风格,地址如下:

https://peps.python.org/pep-0008/#function-and-variable-names

参数:参数是函数定义中用于接收输入值的变量。函数可以接受零个或多个参数,每个参数可以有自己的名称。参数允许在函数内部使用传递进来的值进行计算或处理。在调用函数时,可以向函数传递实际的参数值,这些值将被赋给函数定义中对应的参数变量。

返回值:返回值是函数执行完成后返回给调用者的结果。函数可以执行一系列操作,然后将结果返回给调用者进行进一步处理或使用。在函数定义中,可以使用return语句来指定函数的返回值。如果函数没有指定返回值,或者没有使用return语句,函数将默认返回None。

这三个要素共同构成了一个完整的函数定义和调用的过程。函数名用于唯一标识函数,参数用于接受输入值,返回值用于将结果返回给调用者。通过这种方式,可以封装和组织代码,实现代码的重用和模块化。

接下来我们一起看一个简单的函数定义的案例:

def add(a,b):
    return a + b

从上面的案例可以看到,我们定义一个函数的话,需要用到关键字def进行定义。return用来给函数add提供函数调用后的返回值。

给函数添加一些参数类型说明以及返回值类型说明:

def add(a: int, b: int) -> int:
    c = a + b
    return c

7bb6c2bd186860a3caf0c34eabad2d05.png

在参数后面加一个冒号,然后跟上类型,可以声明函数想要接收的参数类型(但在调用时不会强制校验类型,传入其他类型也不一定会报错),在函数名后面加上->类型 ,用来声明这个函数的返回值的类型。这样做的好处可以提高代码的可读性以及增加一些错误检测机制。

函数的参数类型介绍

  • 位置参数

    位置参数是函数定义中的参数,按照它们在函数调用中的位置进行匹配。当函数被调用时,参数的值按照位置顺序依次传递给函数。

def add(x, y):
    print(x)
    print(y)
    return x + y


result = add(3, 5)

在以上的案例中,位置参数3和5被传递给函数add的x和y,按照顺序,3将赋值给变量x,5将赋值给变量y。这是函数调用最常见的用法。特点:按照函数定义时参数的顺序去进行赋值。

  • 关键字参数

关键字参数是以"参数名=值"的形式传递给函数的参数。使用关键字参数时,可以不按照参数定义的顺序传递参数值,而是通过参数名进行匹配。

def add(x, y):
    print(x)
    print(y)
    return x + y
result = add(y=5, x=3)

注意:在函数调用的时候,关键字参数必须跟随在位置参数后面,否则会报错。

e507387dba397f99f42583bd9d5898fa.png

  • 默认参数

默认参数是在函数定义时给参数指定一个默认值。如果函数调用时没有提供相应的参数值,将使用默认值。默认参数通常在函数定义的末尾。

def add(x, y=0):
    print(x)
    print(y)
    return x + y


result = add(3,5)  
result = add(3)

在上面的案例中,如果调用add方法只传入一个参数时,比如add(3) ,那么默认y的值就是0。

  • 可变参数

    可变参数允许函数接收任意数量的参数,主要有两种可变长度的参数用法:

    *args:用于接收任意数量的位置参数,作为一个元组传递给函数。

    **kwargs:用于接收任意数量的关键字参数,作为一个字典传递给函数。

def print_items(*args):
    print(type(args))
    for item in args:
        print(item)




def print_dict(**kwargs):
    print(type(kwargs))
    for key, value in kwargs.items():
        print(f"{key}: {value}")




print_items(1, 2, 3, 4)  # 位置参数被当做元组处理(1, 2, 3, 4)
print_dict(a=1, b=2)  # 关键字参数被当做字典处理{'a': 1, 'b': 2}

上面脚本运行结果:

5ba84d0921e38aff75b390e7fa6872e9.png

下面再来看一些可变参数的其他用法:

5fae02e7d4754c72d2c7f980b15f74f1.png

def add(a, b=2, **kwargs):
    print(a, b, kwargs)




add(1)
add(1, 3)
# a进行传参,b使用默认值,进行解包传kwargs
add(1, **{"key": "value"})
# 给a,b进行传参,进行解包传kwargs
add(1, 3, **{"key": "value", "key1": "val", "key2": 'val2'})
# a传参,b使用默认值,进行键值对传kwargs
add(1, name="yy", key="value")
# 给a,b进行传参,进行键值对传kwargs
add(1, 3, name="yy", key="value")
add(6, 3, name="yy", **{"key":"value", "b":6})  # 该行运行报错,已经进行对b参数不能进行重复传参

d9a589a1845151edd2cd3fc39873eecd.png

说明:

传值的时候需要传键值对,如果要传dict需要在前面加上**,表示将这个dict的所有key-value当成独立的关键字参数(变成 key = value)传入到 kwargs●不用 dict 的话也可以直接key=value的写法,如果和默认参数重名,若前面没有传值的话,会当成默认参数传值;若有的话会直接报错
●声明函数时,默认参数不可以放在可变参数后面

76a60adc720ccccf0aefcdadc5898070.png

关注公众号,测试干货及时送达f0db9d59d0d0f4357926006ff6c40040.png

往期精彩回顾

5ea91c52bcb7bdc0a9cc4fb0b7229f8c.png

一篇文章为你揭秘pytest的基本用法

Anaconda-一个开源的Python发行版本

Python脚本读取Consul配置信息

Python中使用pickle库进行数据的序列化存储

Python小知识-函数传参怎么设置期望的传参类型?

python解析xml遇到的问题分享(命名空间有关)

分享一下最近使用python字典取值用法的收获

Python里面怎么判断某个字符串是否包含列表中的某一个元素

Python中列表的extend()方法介绍

Python中鸭子类型与多态介绍

Python中的抽象基类介绍

Python中的type与isinstance的区别

Python中类的属性、多继承、自省机制中的__mro__、__dict__ 和dir介绍

Python中__new__和__init__的区别与联系

62fe25ce739914016b2dec5957f3d56f.png

618,清华社 IT BOOK 多得图书活动开始啦!活动时间为 2023 年 6 月 7 日至 6 月 18 日,清华 社为您精选多款高分好书,涵盖了 C++、Java、Python、前端、后端、数据库、算法与机器学习等多 个 IT 开发领域,适合不同层次的读者。全场 5 折,扫码领券更有优惠哦!快来京东点击链接(https://pro.m.jd.com/mall/active/3Rho97HkMaGFycLzAWfFdvZdyvRn/index.html) IT BOOK 多得(或扫描京东二维码)查看详情吧!

猜你喜欢

转载自blog.csdn.net/liboshi123/article/details/131098936