python函数传参和返回值注意事项
程序员文章站
2022-03-20 21:16:47
函数传参 空参数 定义函数时括号里面没有形参,调用时不用传参。 位置传参 规定形参的数量,调用时必须传递相同数量的形参。 带默认参数的形参 带默认值的参数位于非默认值参数的后面, 即位于位置参数,可变参数后面。 传递元组型可变参数 元组传参传递的另一种方式: 传递字典型可变参数 传递字典参数的另一种 ......
函数传参
- 空参数
定义函数时括号里面没有形参,调用时不用传参。
def func(): print('null para.') # 调用 func()
- 位置传参
规定形参的数量,调用时必须传递相同数量的形参。
def func(a, b): print(a,b) # 调用 func(11, 22)
- 带默认参数的形参
带默认值的参数位于非默认值参数的后面, 即位于位置参数,可变参数后面。
def func(a, b, c=0): print(a, b, c) # 调用 func(11, 22)
- 传递元组型可变参数
def f2(a, b, *args): print(a) print(b) print(args) rest = f2(10, 20, 30, 40, 50) print(rest)
执行结果: 10 20 (30, 40, 50)
- 元组传参传递的另一种方式:
def f2(a, b, *args): print(a) print(b) print(args) my_tuple = (30, 40, 50) rest = f2(10, 20, *my_tuple) print(rest)
执行结果: 10 20 (30, 40, 50) 除位置参数10, 20以后的数据自动赋值给了元组形参*args 如果只传10,20这2个参数给f2函数也不会报错,此时元组接收的参数为空。
- 传递字典型可变参数
def f2(a, b, **kwargs): print(a) print(b) print(kwargs) rest = f2(10, 20, ka=558, kb='bbb') print(rest)
执行结果: 10 20 {'ka': 558, 'kb': 'bbb'}
- 传递字典参数的另一种形式:
def f2(a, b, **kwargs): print(a) print(b) print(kwargs) kw_para = {'ka': 558,' kb': 'bbb'} rest = f2(10, 20, **kw_para) print(rest)
执行结果: 10 20 {'ka': 558, 'kb': 'bbb'}
- 位置参数、元组参数、字典参数混合传参
def f2(a, b, *args, **kwargs): print(a) print(b) print(args) print(kwargs) my_kw = {'ka': 558, 'kb': 'bbb'} my_tuple = (30, 40, 50) rest = f2(10, 20, *my_tuple, **my_kw) print(rest)
结果: 10 20 (30, 40, 50) {'ka': 558, 'kb': 'bbb'} 按位置参数、元组参数、字典参数的顺序定义函数和调用,位置顺序不能调换! 除非有带默认参数的位置参数,此时带有默认参数的位置参数需要放到元组参数和字典参数之间。
- 带有默认参数的位置参数、元组参数、字典参数混合传参
def f2(a, *args, b=0, **kwargs): print(a) print(b) print(args) print(kwargs) my_kw = {'ka': 558, 'kb': 'bbb'} my_tuple = (30, 40, 50) rest = f2(10, *my_tuple, **my_kw) print(rest)
结果: 10 0 (30, 40, 50) {'ka': 558, 'kb': 'bbb'}
函数返回值
- 函数执行完不出现return语句,或者return语句不返回值,此时调用者收到的返回值为none。
- 可以返回一个元组。
def func(): return 1, 2, 3 x, y, z = func()
- 返回其他对象等。
上一篇: 关于fgets的理解
下一篇: 赵匡胤防住了所有对手 最后却忘了一个人