变量
变量的作用域(全局变量跟局部变量)
1.全局变量应尽量避免使用
2.局部比全局变量快
3.局部变量和全局变量一样是,系统自动使用局部变量
4.局部变量通过产生栈帧临时保存地址
5.在函数中用golbal声明,则局部变量变为全局变量
全局变量跟局部变量效率测试
#测试局部变量和全局变量的效率
import math
import time
def test01():
start=time.time()
for i in range(1000000):
math.sqrt(30)
end=time.time()
print("耗时{0}".format(end-start))
def test02():
b=math.sqrt
start = time.time()
for i in range(1000000):
b(30)
end=time.time()
print("耗时{0}".format(end-start))
test01()
test02()
参数
参数的传递
1.对可变对象进行写操作(可变对象有列表,集合,字典)
可变对象通过函数的变换,例如a列表后面加上了数字,但其id,即地址是不变的
a=[10,20]
print(id(a))
print(a)
def test01(m):
print(id(m))
m.append(300)
print(id(m))
test01(a)
print(a)
2.传递把不可变对象
不可变对象有字符串,数字,元组,function
传递不可变对象时,发生的运行逻辑,由于原对象不可变,会产生一个新的对象
浅拷贝和深拷贝
浅拷贝:不拷贝对象的内容,只拷贝子对象的引用
深拷贝:会连子对象的内容也全部拷贝一份,对子对象的修改不会影响源对象
#测试浅拷贝和深拷贝<