普通函数:(只含有位置参数)
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======================================分割线======================================