默认参数
在定义阶段就给形参赋值——该形参的常用值
默认参数必须放在非默认参数后面
可选参数
def name(first_name, last_name, middle_name=None):
默认参数应该设置为不可变类型(数字、字符串、元组)
可变类型会记忆地址,使得每次都在上次的基础上进行
def function(ls=[]):
print(id(ls))
ls.append(1)
print(id(ls))
print(ls)
function()
function()
不可变类型,每次地址都不同
可变长参数
一个星号,表明将所有的值放在同一个元组中
def foo(x, y, z, *args):
print(x, y ,z)
print(args)
foo(1, 2, 3, 4, 5, 6) # 多余的参数,打包传递给args
等价于下面,若传元组,前面加*即可打散
foo(1, 2, 3, *[4, 5, 6]) # 打散的是列表、字符串、元组或集合
否则将元组看做一个元素
两个星号,表明将所有的值放在同一个字典中
注意字典传值是=
def foo(x, y, z, **kwargs):
print(x, y ,z)
print(kwargs)
foo(1, 2, 3, a=4, b=5, c=6) # 多余的参数,以字典的形式打包传递给kwargs
等价于
# 字典解封装用**及其对应
foo(1, 2, 3, **{"a": 4, "b": 5, "c":6})
多个返回值——以元组的形式
def foo(x):
return 1, x, x**2, x**3 # 逗号分开,打包返回a, b , c, d = foo(3) # 解包赋值
print(a)
print(b)
print(c)
print(d)
匿名函数 lambda 变量: 返回值
s = "八百标兵奔北坡,北坡八百炮兵炮。标兵怕碰炮兵炮,炮兵怕把标兵碰。"
d = {}
for i in s:
d[i] = d.get(i, 0) + 1
print(d)
print(sorted(d.items(), key = lambda item : item[1], reverse=True))
print(sorted(要排序元素,排序依据))
https://blog.csdn.net/zjuxsl/article/details/79437563