1. 概念
- 多行代码的集合
- 基本定义:
def 函数名():
- 调用方式:
函数名()
2. 函数参数
2.1 单个参数
- def 函数名(num)
2.2 多个参数
- def 函数名(num1, num2)
- 传参方式:
def sum(num1, num2):
sum(4, 5)
或
sum(num2=5, num1=6)
2.3 不定长参数
2.3.1 元组类型的形参
- def 函数名(*args):
def sum(*args):
print(args, type(args))
result = 0
for v in args:
print(v)
result += v
print(result)
sum((4, 5, 6, 7)) #传元组实参
通过在形参前添加*,传参时候就可以像多个参数的函数一样传值
def sum(*args):
print(args, type(args))
result = 0
for v in args:
print(v)
result += v
print(result)
sum(4, 5, 6, 7) #传多参数实参
2.3.2 字典类型的形参
- def 函数名(**dict):
- 只能通过键值方式传参
def sum(**kwargs):
print(kwargs, type(kwargs))
sum(name="tmd", score=99)
2.3.3 参数拆包
- 装包:把传递的参数包装成一个集合
def sum(*args):
def 函数名(**dict):
# 上面函数传参时就是装包
sum(4, 5, 6, 7) # 装成一个元组包
sum(name="tmd", score=99) # 装成一个字典包
- 拆包:把集合参数分解成独立个体
def test(*args):
print(args) # 打印结果是一个元组类型
# 拆包
print(*args) # 打印结果是单个独立的数据
def test(**kwargs):
print(kwargs) # 打印结果是一个字典类型
# 拆包操作
# 应该使用 ** 进行拆包操作
print(**kwargs) # 字典拆包不能打印
- 上述拆包使用场景一般是:
- 元组拆包后用于传参进多个形成参的函数中:
def testA(a, b, c, d):
...
def testB(*args):
# 拆包后传参
testA(*args)
testB(3, 4, 5)
- 字典拆包后用于传参进多个形成参的函数中:
def testA(a, b,):
...
def testB(**kwargs):
# 拆包后传参
testA(*kwargs)
testB(a = 1, b = 2)
2.4 缺省参数
- def 函数名(参数名1 = 默认值, 参数名2 = 默认值):
- 给定默认值即为缺省参数,使用时可不传值
2.5 参数传递形式
- 值传递:形参接收是一个副本,修改形参,不影响实参
- 引用传递:形参接收是一个变量地址,修改形参,实参也会被改变
python 中传递都是引用传递
1. 如果实参是可变,则修改形参,实参同时被改变
2. 如果实参不可变,则不可以修改形参
3 函数返回值
def 函数名():
函数体
return 数据
4 函数使用描述
- 在函数名的下一行使用三个双引号对进行注释描述
- 在 pycharm IDE 上,输入三个双引号按回车即会补上默认格式的函数描述文本
def caculate(a, b=1):
"""
计算两个数据的和, 以及差
:param a: 数值1, 数值类型, 不可选, 没有默认值
:param b: 数值2, 数值类型, 可选, 默认值: 1
:return: 返回的是计算的结果, 元组 : (和, 差)
"""
he = a + b
cha = a - b
return (he, cha)
res = caculate(6, 7) # 使用集合
# he, cha = caculate(6, 7) #解包使用
网友评论