函数的返回
def comMax(a,b,c):
print(a*2,b*2,c*2)
return(a*b*c)
c=comMax(12,20,30)
print(c)
#测试参数的传递 传递可变对象
b=[10,20]
print(b) #打印出来是10、20
def t(m):
print(m) #打印出来是10、20
m.append(300)
print(m) #打印出来是10、20、30
t(b)
并且ID一直没有变化
#测试传递的不可变对象
c=200
def f(n):
print(n) #打印出来是200
n = n+20
print(n) #打印出来是220,ID和上面的不一样
f(c)
#浅拷贝与深拷贝
import copy
a=[10,20,[5,6]]
b=copy.copy(a)
print(a) #[10, 20, [5, 6]]
print(b) #[10, 20, [5, 6]]
b.append(30)
b[2].append(7)
print(a) #[10, 20, [5, 6, 7]]
print(b) #[10, 20, [5, 6, 7], 30]
浅拷贝——传递不可变对象
a=10
print(a) #10
print(id(a)) #140727950321744
def hanshu1(m):
print(m,id(m)) #10 140727950321744
m=20
print(m,id(m)) #20 140727950322064
hanshu1(a)
不可变对象里面包含的子对象是可变的,则方法内修改了这个可变对象,源对象也发生了变化。如下
a=(10,20,[5,6]) #建立一个元组
print(a)
print(id(a)) #(10, 20, [5, 6]) 2728765401152
def hanshu1(m):
print(m)
print(id(m)) #(10, 20, [5, 6]) 2728765401152
m[2][0]=20
print(m)
print(id(m)) #(10, 20, [20, 6]) 2728765401152
hanshu1(a)
print(a) #(10, 20, [20, 6]) 2728765401152