知识点总览
- 1.变量的作用域(全局变量和局部变量)
- 2.局部变量和全局变量效率测试
- 3.参数的传递
- 4.传递不可变对象的引用
- 5.浅拷贝和深拷贝
- 6.传递不可变对象是浅拷贝
- 7.参数的几种类型
- 8.可变参数
- 9.lambda表达式和匿名函数
- 10.eval()函数
前言:涉及到一些算法,如果不懂的可以自己去搜索一番,有助于自己的理解
1.变量的作用域(全局变量和局部变量)
a = 3 #全局变量
def skt001():
b = 5 #局部变量
print(b*8)
skt001()
2局部变量和全局变量效率测试
局部变量的查询和访问速度比全局变量快,优先考虑使用,尤其是在循环的时候 在特别强调效率的地方或者循环次数较多的地方,可以通过将全局变量转换为局部变量提高运行速度
代码段:
import math
import time
def skt01():
start = time.time()
for i in range(10000000):
math.sqrt(30)
end = time.time()
print("耗时{0}".format(end-start))
def skt02():
b = math.sqrt
start = time.time()
for i in range(10000000):
b(30)
end = time.time()
print("耗时{0}".format(end-start))
skt01()
skt02()
3.参数的传递
从实参到形参的赋值操作 传递可变对象
代码段:
a = [10,20,30]
print(id(a))
print(a)
def skt01(m):
print(id(m))
m.append(300)
print(id(m))
skt01(a)
print(a)
4.传递不可变对象的引用
传递对象是不可变对象(例如:init、float、字符串、元组、布尔值),实际传递的还是对象的引用。
5.浅拷贝和深拷贝
内置函数:copy(浅拷贝)、deepcopy(深拷贝) 测试浅拷贝、深拷贝
代码段:
import copy
def testCopy():
a =[10,20,[5,6]]
b = copy.copy(a)
print('a:',a)
print('b:',b)
b.append(30)
b[2].append(7)
print(".....浅拷贝.....")
print('a:',a)
print('b:',b)
def testCopy():
a =[10,20,[5,6]]
b = copy.copy(a)
print('a:',a)
print('b:',b)
b.append(30)
b[2].append(7)
print(".....深拷贝.....")
print('a:',a)
print('b:',b)
6.传递不可变对象是浅拷贝
7.参数的几种类型
#位置参数 函数调用时,实参默认按位置传递,需要个数和形参匹配。按位置传递的参数,称为:“位置参数”。 #默认值参数 可以为某些参数设置默认值,这样这些参数在传递时就可选的。称为“默认值参数” #命名参数 按照形参的名称传递参数,称为“命名参数”
8.可变参数
可变参数指的是“可变数量的参数”。
9.lambda表达式和匿名函数
实际生成了一个函数对象 #格式:lambda arg1,arg2,arg3... : 表达式
10.eval()函数
功能:将字符串str当成有效的表达式来求值并返回计算结果