标签:参数设置 成功 a* 赋值 地址 建立 mon span 方式
#函数
def hello(): #定义函数
print("python 你好!")
hello() #调用函数
def add(a,b): #定义函数
return a+b #返回值
add(1,2)
add #直接用函数名,可返回函数变量名的内存地址
x = add #将函数名赋值给变量
x(1,2) #通过变量调用函数
#函数参数的多态性:指同一个函数,传递的参数类型不同时可获得不同的结果,体现了(参数得的)多态性
print(add(1,2.5)) #数字加法
print(add("abc","def")) #字符串的连接
print(add((1,2),(3,4))) #元组的合并
print(add([1,2],[3,4])) #执行列表合并
#参数的赋值传递
#Python允许以形参赋值的方式,将指定的实参传递给形参:
def add_2(a,b):return a+b
add_2(a=‘ab‘,b=‘cd‘)
add_2(b=‘ab‘,a=‘cd‘) #指定接收形参的名称,所以传递参数的先后顺序无关紧要
#参数的传递与共享引用:
def f(x):
x = 100
a=10
f(a)
print(a) #非变量,不会改变
#python的赋值是建立变量到对象的引用。
#重新赋值时,意味着形参引用了新的对象,原来的引用已经作废
#可变参数
def f(a):
a[0]=‘abc‘ #修改列表的第一个值
x=[1,2]
f(x) #调用函数,传递列表对象的引用
print(x) #变量x引用的列表对象在函数中被修改
#可变参数在函数中可被修改,
#如果要避免列表在函数中被修改,可试用列表的拷贝作为实参:
x=[1,2]
print("x=",x)
a=f(x[:])
print("f(x[:])=",a) #传递列表的拷贝
print("x=",x)
#还可在函数内对列表进行拷贝,实参任使用变量:
def f_4(a):
a=a[:] #拷贝列表
a[0]=‘abc‘ #修改列表的拷贝
x_4=[1,2]
f_4(x_4)
print(x_4) #结果显示原列表不变
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#函数的拷贝调用不成功!!!!!!!
#有默认值的函数
#定义函数时,可以为参数设置一个默认值.
#调用函数时如果没有提供实参,则使用形参的默认值
def add_2(a,b=-100): #参数b的默认值为-100
return a+b
print("add_2(1,2)=",add_2(1,2)) #传递指定参数
print("add(1)=",add_2(1)) #形参b取默认值
#带默认值的参数在定义函数时,应该放在参数表的末尾
#传递任意个数的参数
def add_3(a,*b):