# 函数作用:封装;封装作用:复用
# 加法
def add(x, y):
result = x + y
return result
result = add(4, 5)
print(result)
# 函数参数
def f(x, y, z):
pass
# 位置参数调用*
f(1, 2, 3) # 第一种方法
# 关键字参数调用(参数顺序可以打乱)*
f(x=1, y=2, z=3)
f(z=None, y=10, x=[1]) # 打乱参数顺序
# 参数默认值
def add(x=4, y=5):
return x + y
# 调用
add() # 结果:9
add(6) # 结果:11
add(x=6, y=7) # 结果:13
# 登录
def login(host='127.0.0.1', port='8080', username='wang', password='123456', **kwargs):
pass
# 调用
login()
login('127.0.0.1', '80', 'tom', '123456')
login(username='tom', password='123456')
# 一个参数
def add(nums):
sum = 0
for i in nums:
sum += i
return sum
print(add([1, 2, 3, 4, 5]))
print(add((1, 2, 3, 4, 5)))
# 可变位置参数(一个形参可以匹配0个或多个参数:*nums)*
def add(*nums):
sum = 0
print(type(nums)) # tuple
for i in nums:
sum += i
return sum
print(add(1, 2, 3, 4, 5))
# 可变关键字参数(可以接受多个关键字参数:**kwargs)*
def showConfig(**kwargs):
print(kwargs) # dict
for k, v in kwargs.items():
print('{}={}'.format(k, v))
# 调用
showConfig(host='127.0.0.1', port='8080', username='wang', password='123456')
# 混合参数
def showConfig(useranme, password, **kwargs):
pass
def showConfig(useranme, *args, **kwargs):
pass
# keyword-only参数(Python3中在*args后出现的普通参数x)
def fn(*args, x, y, **kwargs):
pass
def fn(*args, x):
print(x)
print(args)
# 调用
fn(1, 2, 3, x=10)# keyword-only参数的另一种形式def fn(*, x, y): # 只允许两个参数,且两个参数必须是keyword-only print(x, y)def fn(z, *, x, y): print(x, y)def fn(*args, x=1): print(x) print(args)# 普通参数 fun(x)# 普通参数加缺省值 fun(x=10)# 位置参数 fun(*args)# 可变参数 fun(**kwargs)# keyword-only参数 fun(*, x=10)