本文主要内容:动态接收位置参数*args
动态参数与位置参数的顺序优先级
动态参数与默认参数的使用
动态接收关键字参数**kwargs
小案例1:位置参数 默认参数 *args **kwargs使用
小案例2:位置参数 *args 默认参数 **kwargs
函数的注释
利用__doc__函数可以查看函数的注释内容
动态接收位置参数*args
*args 将所有实参的位置参数聚合到一个元组,并将这个元组赋值给argsdef makeFrinds(*args):
print("学习编程语言:",args)
print(type(args))
makeFrinds("python","java","C","C++","Go")
#输出:
#学习编程语言: ('python', 'java', 'C', 'C++', 'Go')
#输出的是一个元组
*args 动态接收位置参数
动态参数与位置参数的顺序优先级def makeFrinds(*args,a,b):
print(args,a,b)
makeFrinds("python","java","C","C++","Go")
#输出:Traceback (most recent call last):
# File "F:/VSA4.0/TestFrameWork(1)/zzytest/day1/demo10-1.py", line 13, in
# makeFrinds("python","java","C","C++","Go")
# TypeError: makeFrinds() missing 2 required keyword-only arguments: 'a' and 'b'def makeFrinds(a,b,*args):
print("a的值为:"+a)
print("b的值为:" + b)
print("*args的值为:",args)
makeFrinds("python","java","C","C++","Go")
# 输出:
# a的值为:python
# b的值为:java
# *args的值为: ('C', 'C++', 'Go')
从上面的代码我们可以看出位置参数的位置在动态参数前面
动态参数与默认参数的使用def makeFrinds(a,b="Mysql",*args):
print("a的值为:"+a)
print("b的值为:" + b)
print("*args的值为:",args)
makeFrinds("python","java","C","C++","Go")
#输出:
# a的值为:python
# b的值为:java
# *args的值为: ('C', 'C++', 'Go')
从上面的代码我们可以分析到动态参数位置在关键字参数前面,关键字参数的值未改变def makeFrinds(a,*args,b="Mysql"):
print("*"*12)
print("a的值为:"+a)
print("*args的值为:", args)
print("b的值为:" + b)
makeFrinds("python","java","C","C++","Go")
#输出:
# a的值为:python
# *args的值为: ('java', 'C', 'C++', 'Go')
# b的值为:Mysql
从上面的代码我们可以分析到如果不给出关键字传参,那么参数值是一直生效的了def makeFrinds(a,*args,b="Mysql"):
print("a的值为:"+a)
print("*args的值为:", args)
print("b的值为:" + b)
makeFrinds("python","java","C","C++",b="Go")
#输出:
# a的值为:python
# *args的值为: ('java', 'C', 'C++')
# b的值为:Go
从上面的代码可以给b关键字参数传值了,覆盖了默认的参数
动态接收关键字参数**kwargs
将所有实参的关键字参数聚合到一个字典,并将这个字典赋值给kwargsdef makeFrinds(**kwargs):
print(kwargs)
print(type(kwargs))
makeFrinds(a=1,b=2,c=3)
# 输出:
# {'a': 1, 'b': 2, 'c': 3}
# dic ={'a': 1, 'b': 2, 'c': 3}
makeFrinds(**dic)
# 输出:
# {'a': 1, 'b': 2, 'c': 3}
#
小案例1:位置参数 默认参数 *args **kwargs使用def makeFrinds(a, b, c=0, *args, **kwargs):
print("a的值为:",a)
print("b的值为:",b)
print("c的值为:",c)
print("args的值为:",args)
print("**kwargs的值为",kwargs)
makeFrinds(1, 2, m=7, n=8)
#输出:
# a的值为:1
# b的值为:2
# c的值为: 0
# args的值为: ()
# **kwargs的值为 {'m': 7, 'n': 8}def makeFrinds(a, b, c=0, *args, **kwargs):
print("a的值为:",a)
print("b的值为:",b)
print("c的值为:",c)
print("args的值为:",args)
print("**kwargs的值为",kwargs)
makeFrinds(1, 2, 3, 4, 5, 6, m=7, n=8) # 1 2 3 (4, 5, 6) {'m': 7, 'n': 8}
#输出:
# a的值为:1
# b的值为:2
# c的值为:3
# args的值为: (4, 5, 6)
# **kwargs的值为 {'m': 7, 'n': 8}
小案例2:位置参数 *args 默认参数 **kwargsdef makeFrinds(a, b, *args, c=0, **kwargs):
print("a的值为:", a)
print("b的值为:", b)
print("c的值为:", c)
print("args的值为:", args)
print("**kwargs的值为", kwargs)
makeFrinds(1, 2, 3, 4, 5, 6, m=7, n=8)
# 输出:
# a的值为:1
# b的值为:2
# c的值为:3
# args的值为: (4, 5, 6)
# **kwargs的值为 {'m': 7, 'n': 8}def makeFrinds(a, b, *args, c=0, **kwargs):
print("a的值为:", a)
print("b的值为:", b)
print("c的值为:", c)
print("args的值为:", args)
print("**kwargs的值为", kwargs)
makeFrinds(1, 2, 3, 4, 5, 6, c=9, m=7, n=8)
#输出:
# a的值为:1
# b的值为:2
# c的值为:9
# args的值为: (3, 4, 5, 6)
# **kwargs的值为 {'m': 7, 'n': 8}
从上面的代码我们可以知道参数位置顺序:位置参数 > args(动态位置参数) > 默认值参数 > *kwargs(动态默认参数)
函数的注释def makeFrinds(name,age,sex,area):
'''
这里描述这个函数是做什么的.例如这函数makeFrinds就是交朋友功能
@param name: name参数代表什么 姓名
@param age: age参数代表什么 年龄
@param sex: sex参数代表什么 性别
@param area: area参数代表什么 地区
@return: 执行完这个函数想要返回给调用者什么值 例如:这个函数返回的值姓名,年龄,性别,地区
'''
return name,age,sex,area
makeFrinds("小花","20","女","北京")
利用__doc__函数可以查看函数的注释内容print(makeFrinds.__doc__)
#输出
这里描述这个函数是做什么的.例如这函数makeFrinds就是交朋友功能
@param name: name参数代表什么 姓名
@param age: age参数代表什么 年龄
@param sex: sex参数代表什么 性别
@param area: area参数代表什么 地区
@return: 执行完这个函数想要返回给调用者什么值 例如:这个函数返回的值姓名,年龄,性别,地区