# 必需参数
# 默认参数
# 关键字参数
# 不定长参数
# 必需参数:必需参数须以正确的顺序传入函数,调用时的数量必须和声明时的一样。
def must(m):
# 调用时必须传入一个参数
print("必须传入参数",m)
return
# 调用函数,不传入参数会报错
print(must())
# 默认参数:调用时不传入参数就使用默认值代替
def tac(t ="默认值" ):
# 调用时不传入参数,使用默认值
print("使用默认值", t)
return
# 调用函数,不传入参数会使用默认值
print(tac())
# 关键字参数 :函数名(key=value)
# 关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
# 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
def print_falst(num,who):
print("第%s个函数的创建,你是%s" %(num,who))
print_falst(1,"Tom")
print_falst(who = "Tony",num = 2)
# 直接使用关键字参数,如不传递,关键字参数将使用默认值,传入的参数顺序可变
def print_second(who="name",num=None):
print("第%s个函数的创建,你是%s" %(num,who))
print_second(who = "Linda")
# 不定长参数:可随意传入参数,不限位数
# 一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数
# 加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
def rand( msg, *vartuple ):
"打印任何传入的参数"
print ("输出: ",msg)
# 剩余所有参数
print (vartuple)
# 调用rand 函数
rand( 1, 2, 3, 4, 5, 6, 7 )
# 如果在函数调用时没有指定参数,它就是一个空元组
# 不向函数传递未命名的变量
def rand1(msg1, *vartuple):
"打印任何传入的参数"
print("输出: ", msg1)
for msg2 in vartuple:
print(msg2)
return
# 调用rand1 函数
rand1(5)
rand1(1, 2, 3, 4, 5)
# 还有一种就是参数带两个星号 **,加了两个星号 ** 的参数会以字典的形式导入。
def rand2(msg3, **vardict):
"打印任何传入的参数"
print("输出: ", msg3)
print(vardict)
# 调用rand2 函数
rand2(1, a=2, b=3)
# 声明函数时,参数中星号 * 可以单独出现,如果单独出现星号 * 后的参数必须用关键字传入
def rand3(a,b,*,c):
return a+b+c
m = rand3(1,2,c=3)
print(m)
# 不定长参数可以接收 位置参数,关键字参数
# 不定长参数接收位置参数 *args
# 不定长参数接收关键字参数 **kwargs
# 不定长接收位置参数
def print_third(*args):
print(*args)
# 输出args输入的值
print(args)
print_third('3','min','av')
# 不定长接收关键字参数,会自动将参数转换为字典
def print_fourth(**kwargs):
print(kwargs)
# 输出who关键字对应的值
print(kwargs['who'])
print_fourth(num=1,who="Tony")
# 匿名函数
# python 使用 lambda 来创建匿名函数。
# 所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
# 语法
# lambda 参数:返回值
# 使用场景:通常用在只使用一次的场景下,且处理操作简单
# 定义函数
def print_fifth(a,b):
return a + b
print(print_fifth(1,2))
# lambda函数写法,切记使用简单,最好只使用一次
lam = lambda a,b : a + b
print(lam(1,2))
# 强制位置参数
# Python3.8 新增了一个函数形参语法 / 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。
# 在下方的例子中,形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 或 f 要求为关键字形参:
def force(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)
# 正确写法
force(1, 2, 3, d=4, e=5, f=6)
# 错误写法
# force(1, b=2, c=3, d=4, e=5, f=6) # b 不能使用关键字参数的形式
# force(1, 2, 3, 4, 5, f=6) # e 必须使用关键字参数的形式
# 函数说明文档
# 通过调用 Python 的 help() 内置函数或者 __doc__ 属性,我们可以查看某个函数的使用说明文档。事实上,无论是 Python 提供给我们的函数,还是自定义的函数,其说明文档都需要设计该函数的程序员自己编写。
# 函数的说明文档通常位于函数内部、所有代码的最前面。
# 设置说明文档
# 定义一个比较数字大小的函数
def num_max(num1,num2):
'''
比较 2 个数字的大小
'''
num = num1 if num1 > num2 else num2
return num
help(num_max)
# print(num_max.__doc__)