0. 概要
本文总结了函数传参的方式,便于使用时快速查询
本文总结自廖雪峰的python3教程
函数的命名不能以数字开头,且只能包含字母、数字、下划线。与变量相同。
1. 位置参数
相当于一个占位,传参时不需要指定参数名
def testFunc(x):
return x * x
def testFunc2(x, y):
return x + y
调用:
>>>testFunc(6)
36
>>>testFunc2(6, 7)
13
2. 默认参数
定义函数时给参数设置一个默认值,当传参时没有传入参数则自动赋予默认值作为参数
格式特点:“默认参数”必须放在“位置参数”的后面
注意:默认参数必须指向不变对象
def testFunc3(x, y=2):
return x
def testFunc4(x=2, y=3):
return x, y
调用:
>>> testFunc3(y=4, x=0)
(0, 4)
>>> testFunc3(3)
(3, 2)
>>> testFunc3(9,8)
(9, 8)
3. 可变参数
当传入的参数的数量无法确定时就可以使用可变参数,可以传入任意个包括0个参数
如果传入了多个参数,在函数调用时自动组装成为一个tuple
格式特点:定义函数时在参数名前加一个星号*
def testFunc5(*numbers):
sum = 1
for n in numbers:
sum = sum * n
return sum
调用:
>>> testFunc5(3, 5, 9)
135
传入一个list或tuple的时候必须在参数前面加上星号*
>>> testNumbers = [6, 2, 4]
>>> testFunc5(*testNumbers)
48
4. 关键字参数
关键字参数允许传入0个或人一个含有参数名的参数,
函数调用时自动组装为一个dict
定义:
def testFunc6(name, numberOfPhones, **phonesName):
print(f"""name: {name}
number: {numberOfPhones}
other: {phonesName}""")
调用:
>>> testFunc6('Simon', 3, Phone1='iPhone', Phone2='Xiaomi')
name: Simon
number: 3
other: {'Phone1': 'iPhone', 'Phone2': 'Xiaomi'}
或者可以将dict直接传入关键词参数,但是传入时需要再dict名称前加2个星号**
定义:
Phones= {'Phone1': 'iPhone', 'Phone2': 'Xiaomi'}
testFunc6('Simon', 3, **Phones)
5. 命名关键字参数
命名关键字参数限制了传入的参数的名字
传参时必须传入参数名,否则将报错
定义:
def testFunc7(name, os, *, version, language):
print(name, os, version, language)
调用
>>> testFunc7('pyServer', 'Centos', version= 8, language= 'CN')
pyServer Centos 8 CN
如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了:
def testFunc7(name, os, *type, version, language):
print(name, os, type, version, language)
6. 参数组合
当一个函数存在多种参数类型,必须遵守参数使用的顺序:
必选参数、默认参数、可变参数、命名关键字参数和关键字参数
定义:
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)