函数传参
1 a是元组,是不可变对象,但其子对象[5,6]是可变的,在方法内修改了这个可变对象,源对象也发生了变化
a = (10, 20, [5, 6])
print("a", id(a))
def test01(m):
print("m:", id(m))
m[2][0] = 888
print(m)
print("m:", id(m))
test01(a)
print(a)
print("a", id(a))
参数类型
1 位置参数:常用
2 默认值参数:默认值参数必须位于普通参数后面
def f1(a,b,c=10,d=20)
print(a,b,c,d)
f1(8,9)
f1(8,9,19)
3 命名参数
def f1(a,b,c)
print(a,b,c)
f1(8,9,19)
f1(b=8,c=9,a=19)
4 可变参数:
1)*param(一个星号),将多个参数收集到一个元组对象中
def f1(a, b, *c):
print(a, b, c)
f1(10, 20, 30, 40)
输出:10 20 (30, 40)
2)**param(两个星号),将多个参数收集到一个字典对象中
def f2(a, b, **c):
print(a, b, c)
f2(10, 20, name='张三', age=18)
输出:10 20 {‘name’: ‘张三’, ‘age’: 18}
5 强制命名参数
在带星号的“可变参数”后面增加新的参数,必须是强制明明参数
def f3(*a, b, c):
print(a, b, c)
f3(10, 20, b=3, c=4)