python学习记录-函数学习
题目:# 请定义一个函数,接收多个参数,求接收参数的和
函数参数分三种情况,分别是位置参数、可变参数、关键字参数。下面根据实例来讲解
一、位置参数
def add(a, b):
"""位置参数"""
return a + b
def my_sum(*k):
"""可变参数
可变参数的定义前面加*, 这个*表示对传递进来的可变参数整体打包成一个元组k
举例:
1.比如普通情况调用 my_sum(1, 2, 3), 此时可变参数1, 2, 3会被打包成一个元组k=(1, 2, 3)
2. 如果以列表或元组方式传递参数,此时需要先将列表或元组入参整体解包
my_sum(*(1, 2, 3, 4, 5))
my_sum(*[1, 2, 3, 4, 5, 6])
注:函数定义时的*表示打包, 函数调用时的*表示解包
"""
ret = 0
for i in k:
ret = ret + i
return ret
def my_print(**k):
"""关键字参数 (key value) 也就是dict"""
for key, value in k.items():
print(key)
print(value)
def my_all(a, b, *m, **k):
"""位置参数,可变参数,关键字参数都有
!!!!! 注意顺序,必须严格遵守
"""
print(type(a))
print(type(b))
print(type(m))
print(m)
print(type(k))
print(k)
def multi_ret(a, b):
"""
函数多个返回值情况, 本质是以元组的形式返回
"""
return a + b, a - b
if __name__ == "__main__":
print(my_sum(1))
print(my_sum(1, 2))
print(my_sum(1, 2, 3))
print(my_sum(1, 2, 3, 4))
print(my_sum(*(1, 2, 3, 4, 5)))
print(my_sum(*[1, 2, 3, 4, 5, 6]))
my_print(a="1234", b="xxx")
my_print(**{"name": "tang", "age": 12})
x, y = multi_ret(5, 1)
print(x)
print(y)
my_all(1, 2, 1, name="caiwei", age=18)
my_all(1, 2, **{"name": "caiwei", "age": 18})