前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中函数的介绍

Python中函数的介绍

作者头像
小博测试成长之路
发布2023-09-01 08:26:37
1530
发布2023-09-01 08:26:37
举报
文章被收录于专栏:软件测试学习

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

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

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

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

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

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

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

代码语言:javascript
复制
def add(a,b):
    return a + b

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

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

代码语言:javascript
复制
def add(a: int, b: int) -> int:
    c = a + b
    return c

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

函数的参数类型介绍

  • 位置参数 位置参数是函数定义中的参数,按照它们在函数调用中的位置进行匹配。当函数被调用时,参数的值按照位置顺序依次传递给函数。
代码语言:javascript
复制
def add(x, y):
    print(x)
    print(y)
    return x + y

result = add(3, 5)  

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

  • 关键字参数

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

代码语言:javascript
复制
def add(x, y):
    print(x)
    print(y)
    return x + y
result = add(y=5, x=3)  

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

  • 默认参数

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

代码语言:javascript
复制
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:用于接收任意数量的关键字参数,作为一个字典传递给函数。
代码语言:javascript
复制
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}

上面脚本运行结果:

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

代码语言:javascript
复制
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参数不能进行重复传参

说明:

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小博测试成长之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档