1、位置参数调用(位置必须对应)
def print_student(name, age):
print("name: %s, age: %d" % (name, age))
print_student("xiaohong", 22)
2、关键字参数调用(位置可以随意)
print_student(name="xiaohong", age=22)
3、必须使用关键字参数调用(不定长参数,缺省参数必须使用关键字参数调用)
def print_student(*, name, age):
print("name: %s, age: %d" % (name, age))
print_student(name="xiaohong", age=22)
python中的缺省参数
1、如果一个函数中有缺省参数,缺省参数后面的参数都必需是缺省参数
def print_info(name, id, age=18):
print("name: {}, id: {}, age: {}".format(name, id, age))
print_info("xiaoming", "001")
>>>name: xiaoming, id: 001, age: 18
python 中的不定长参数
def addNums(new_list):
sum = 0
for i in new_list:
sum += i
return sum
# *不定长参数元组
# 不定长参数元组是一个缺省参数,(默认值是为空的元祖)
def addNums1(*args):
sum = 0
for i in args:
sum += i
return sum
print(addNums1(1, 2, 3, 4))
def func1(*args):
print(type(args))
print(args)
# 不定长参数位置传递, 直接给出元组或者列表可以直接使用*
a = ("xiaohua", 21)
b = ["xiaoming", 22]
func1(*a)
func1(*b)
>>><class 'tuple'>
('xiaohua', 21)
<class 'tuple'>
('xiaoming', 22)
# 不定长参数传递字典,是一个缺省参数
def func1(**kwargs):
print(type(kwargs))
print(kwargs["name"])
print(kwargs["age"])
func1(name="xiaoyue", age="11", sex="femeal")
>>><class 'dict'>
xiaoyue
11
# 不定长参数关键字传递, 直接给出字典,可以使用**
def func1(**kwargs):
print(type(kwargs))
print(kwargs["name"])
print(kwargs["age"])
a = {"name": "xiaoming",
"age": 22}
func1(**a)
>>><class 'dict'>
xiaoming
22
# 函数参数顺序规则
def func(a, b, c=10, *args, **kwargs):
"""
函数参数顺序:正常的参数,缺省参数,不定长参数元祖(缺省跟元组可以换位置),不定长参数字典
kwargs:应该放在参数最末尾 """
print("a: ", a)
print("b: ", b)
print("c: ", c)
print("args: ", args)
print("kwargs: ", kwargs)
func(1, 2, 3, 4, 5, 6, name="yang")
func(1, 2)
func(1, 2, 3, 4, 5, 6, name="yang", a=2) # key名不应跟形参名相同