# ##函数的参数
# #位置参数 调用时传入的值按照顺序赋值给函数
def power(x, n):
s = 1
for i in range(1, n + 1):
s = s * x
return s
print('位置参数的调用:')
print(power(2, 3))
# #默认参数
def power(x, n=2):
s = 1
for i in range(1, n + 1):
s = s * x
return s
print('默认参数的调用:')
print(power(9))
# #可变参数 * 加一颗星号,用于元组
def calc_sum(*num_list):
s = 0
for n in num_list:
s = s + n
return s
print('可变参数的调用:')
print(calc_sum(1, 2, 3, 4, 5, 6))
print(calc_sum(1, 2, 3, 9))
# #关键字参数 ** 加入两颗星号
# 关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict,即数据字典
def person(name, age, **kwargs):
print('name:', name, 'age:', age, 'other:', kwargs)
print('关键字参数的调用:')
person('Adam', 45, gender='M', job='Engineer')
# #命名关键字参数 加入*作为分隔符 *后面的参数为命名关键字参数
# 命名关键字参数必须传入参数名
def person_named1(name, age, *, city, job):
print(name, age, city, job)
print('命名关键字的调用1:')
person_named1('Sam', 19, city='Hangzhou', job='Student')
# 如果函数中已经存在可变参数,使用命名关键字参数时不需要再加入*号
def person_named2(name, age, *args, city, job):
print(name, age, args, city, job)
print('命名关键字的调用2:')
person_named2('Bob', 45, 888, 999, 111, city='Shanghai', job='Teacher')
# #参数类型混合使用
# 混合使用时,定义的顺序应为 必选参数 默认参数 可变参数 命名关键字参数 关键字参数
def mix_fun(a, b, c=2, *args, key1, key2, **kwargs):
print(a, b, c, args, key1, key2, kwargs)
print('混合关键字的调用:')
mix_fun('A', 'B', 'C', 1, 2, 3, 4, 5, key1=1, key2=2, D='6u', F='f', G='g')
# 输出 A B C (1, 2, 3, 4, 5) 1 2 {'G': 'g', 'F': 'f', 'D': '6u'}
a_tuple = ('A', 'B', 'C', 1, 2, 3, 4, 5,)
b_dict = {'key1': 1, 'key2': 2, 'D': '6u', 'F': 'f', 'G': 'g'}
mix_fun(*a_tuple, **b_dict)
# 输出 A B C (1, 2, 3, 4, 5) 1 2 {'G': 'g', 'F': 'f', 'D': '6u'}