本文总结了函数传参的方式,便于使用时快速查询python
本文总结自廖雪峰的python3教程数组
函数的命名不能以数字开头,且只能包含字母、数字、下划线。与变量相同。bash
至关于一个占位,传参时不须要指定参数名函数
def testFunc(x):
return x * x
def testFunc2(x, y):
return x + y
复制代码
调用:ui
>>>testFunc(6)
36
>>>testFunc2(6, 7)
13
复制代码
定义函数时给参数设置一个默认值,当传参时没有传入参数则自动赋予默认值做为参数spa
格式特色:“默认参数”必须放在“位置参数”的后面code
注意:默认参数必须指向不变对象对象
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)
复制代码
当传入的参数的数量没法肯定时就能够使用可变参数,能够传入任意个包括0个参数get
若是传入了多个参数,在函数调用时自动组装成为一个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
复制代码
关键字参数容许传入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)
复制代码
命名关键字参数限制了传入的参数的名字
传参时必须传入参数名,不然将报错
定义:
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)
复制代码
当一个函数存在多种参数类型,必须遵照参数使用的顺序:
必选参数、默认参数、可变参数、命名关键字参数和关键字参数
定义:
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)
复制代码