#可变的参数传递
#默认位置传参
def hanshu(a,b):#a对应75,b对应5
if a>b:
print('最大值为',a)
else:
print('最大值为',b)
hanshu(75,5) #75对应a,5对应b
#关键字传参
def hanshu(a,b):#a和b都叫做形参,形式上的参数,
if a>b:
print('最大值为',a)
else:
print('最大值为',b)
hanshu(a=5,b=75) #通过赋值的方法传参,也避免了出错
#默认值传参
def hanshu(b,a=99): #只能传参给后面,反之会报错,如果改变a b的位置不会报错
if a>b:
return a
else:
return b
diaoyong=hanshu(75) #
print(diaoyong)
#可变参数 *(自动组装元组)
def hanshu(*name): #一个*自定组装为列表
print(name)
print(type(name))
hanshu('amy','boy') #调用的时候可以传入多个参数
#可变参数 **(自动组装列表)
def hanshu(**name): #两个**自定组装为列表
print(name)
print(type(name))
hanshu(zidian='bb',zidian1='cc',zidian3='dd') #键值对的 : 变成了 = '''
#值传递和引用传递
# 值传递:不可变数据类型,在函数进行值的修改,源对象不会被修改
# 引用传递:可变数据类型,在函数进行值的修改,源对象会被修改
zhengxing=2 #表示不可变数据类型,源对象
liebiao=[0,1,2,3,4,5,6] #表示可变数据类型,源对象
def hanshu(c,d):
c=1 #无法修改源对象,因为是不可变数据类型
d[0]=1 #修改0的下标,最后源被修改
hanshu(zhengxing,liebiao) #此时zhengxing传给了c,liebiao传给了d
print(zhengxing) #源没有被修改
print(liebiao) #源被修改了



