胡昌泽 def函数

    技术2022-08-01  85

    #75 函数也是对象_内存分析

    def test01(): print('sss') test01() c=test01 c()

    >>>sss sss

     

    #76 全局变量,局部变量

    全局变量适用于所有函数(不建议使用)

    局部变量只适用于某个函数

    a=20 def test01(): b=10 print(b*10) global a # 通过global把全局变量a转化成局部变量 print(a/2) test01() >>>100 10.0

    #77 全局变量,局部变量效率测试

    # 全局变量,局部变量效率测试 import time import math def test01(): start=time.time() for a in range(10000000): # 开根号 math.sqrt(30) end=time.time() print('耗时{0}'.format(end-start)) test01() # 把math,sqrt提取出来再测试 import time import math c=math.sqrt def test02(): start=time.time() for b in range(10000000): c(30) end=time.time() print('耗时{0}'.format(end-start)) test02() >>>耗时1.5391669273376465 耗时1.181614637374878

    #78 参数的传递_传递可变对象_内存分析

    #79 参数的传递_传递不可变对象_内存分析.

    #80 浅拷贝,深拷贝

    浅拷贝:不拷贝子对象的内容,只拷贝子对象的引用

    深拷贝:子对象的内存也一起拷贝,对子对象的修改不会影响源对象

    #浅拷贝

    # 浅拷贝 import copy a=[20,30,40,[10,20]] b=copy.copy(a) print(a) print(b) b.append(88) b[3].append(66) print(a) print(b) >>>[20, 30, 40, [10, 20]] [20, 30, 40, [10, 20]] [20, 30, 40, [10, 20, 66]] [20, 30, 40, [10, 20, 66], 88]

     

    #深拷贝

    # 深拷贝 import copy a=[20,30,40,[10,20]] b=copy.deepcopy(a) print(a) print(b) b.append(88) b[3].append(66) print(a) print(b) >>>[20, 30, 40, [10, 20]] [20, 30, 40, [10, 20]] [20, 30, 40, [10, 20]] [20, 30, 40, [10, 20, 66], 88]

    #81 参数的传递_不可变对象含可变子对象_内存分析

    传递不可变对象时,不可变对象的子对象可能是可变的,则修改了子对象,同时源对象也发生了变化。

    # 默认值参数 def f1(a,b,c=10,d=20): # 默认值参数必须位于其他参数后面 print(a,b,c,d) f1(8,9) f1(8,9,11) f1(9,1,2,3) # 位置参数 f1(b=100,c=200,d=190,a=32) # 命名参数 >>>8 9 10 20 8 9 11 20 9 1 2 3 32 100 200 190

     

    #82 参数的类型_位置参数_默认值参数_命名参数.

    一个*表示将多个参数收集到一个“元组”对象中

    两个**表示将多个参数收集到一个“列表“中去

     

    #84 lambda返回值和匿名参数

    # a,b,c是形参,a+b+c是表达式,相当于函数体 f=lambda a,b,c:a+b+c print(f) print(f(2,3,4)) >>>9 # 三个lambda g=lambda a:a*2, lambda b:b+1, lambda c:c%2 print(g[0](6),g[1](3),g[2](4)) >>>12 4 0

    #85 eval()函数用法

    a=10 b=20 c=eval('a+b') print(c) dict1=dict(a=100,b=200) d=eval("a+b",dict1) print(d) >>>30 300

    #86 递归函数_函数调用内存分析_栈帧的创建

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    Processed: 0.010, SQL: 9