普通函数:(只含有位置参数)
def person(name, age):
print(name, age)
person('Jack', 20)
#输出: Jack 20
person(age=20, name='Jack')
#输出: Jack 20
参数必须是2个,且必须按照顺序。如果以表达式形式传入,可以不按顺序。
======================================分割线======================================
含有默认参数的函数:
def person(name, age=20):
print(name, age)
person('Jack')
#输出: Jack 20
person('Jack', 30)
#输出: Jack 30
person(age=30, name='Jack')
#输出: Jack 30
======================================分割线======================================
含有可变参数的函数:(可变参数将被打包成tuple形式)
def person(name, age=20, *other):
print(name, age, other)
person('Jack')
#输出: Jack 20 ()
person('Jack', 30)
#输出: Jack 30 ()
person('Jack', 'what')
#输出: Jack what ()
person('Jack', 30, 'what','up')
#输出: Jack 30 ('what', 'up')
person('Jack', age=30, 'what','up')
#输出: SyntaxError: positional argument follows keyword argument
person(name='Jack', 30, 'what','up')
#输出: SyntaxError: positional argument follows keyword argument
person(name='Jack', age=30, 'what','up')
#输出: SyntaxError: positional argument follows keyword argument
错误提示:位置参数在键值对之后。也就是说,键值对后不能再有位置参数。
======================================分割线======================================
含有可变键值对参数的函数:(可变参数将被打包成dict形式)
def person(name, age=20, **other):
print(name, age, other)
person('Jack')
#输出: Jack 20 {}
person('Jack', 30)
#输出: Jack 30 {}
person('Jack', 'what')
#输出: Jack what {}
person('Jack', 30, gender='Male', married='No')
#输出: Jack 30 {'gender': 'Male', 'married': 'No'}
person('Jack', age=30, gender='Male', married='No')
#输出: Jack 30 {'gender': 'Male', 'married': 'No'}
person(name='Jack', 30, gender='Male', married='No')
#输出: SyntaxError: positional argument follows keyword argument
person(name='Jack',age=30, gender='Male', married='No')
#输出: Jack 30 {'gender': 'Male', 'married': 'No'}
person(age=30, name='Jack', gender='Male', married='No')
#输出: Jack 30 {'gender': 'Male', 'married': 'No'}
错误提示:位置参数在键值对之后。也就是说,键值对后不能再有位置参数。
======================================分割线======================================
含有命名关键字的函数:(函数只接收且必须接收星号后面的命名关键字,起到保护过滤作用)
def person(name, age=20, *, qq):
print(name, age, qq)
person('Jack')
#输出 TypeError: person() missing 1 required keyword-only argument: 'qq'
person('Jack', qq='123456789')
#输出 Jack 20 123456789
person(name='Jack', qq='123456789')
#输出 Jack 20 123456789
功能:只能传入且一定要传入对应的关键字。
目的:为了进一步保护传入到函数中的变量。
注:如果命名关键字在可变参数后,则无需单独的*来分开了。
def person(name, age=20, *other, qq):
print(name, age, other, qq)
person('Jack','lot','what','up',qq=12345)
#输出: Jack lot ('what', 'up') 12345
======================================分割线======================================