深圳的网站建设,一级建造师价格最新行情,什么网站可以做章,做动画网站公司函数名的使用#xff1a;函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量函数名的内存地址#xff1a;deffunc():passprint(func) #函数的内存地址结果#xff1a;函数名可以赋值给其他变量#xff1a;deffunc():print(1)afunca()func()#函数名可以…函数名的使用函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量函数名的内存地址deffunc():passprint(func) #函数的内存地址结果函数名可以赋值给其他变量deffunc():print(1)afunca()func()#函数名可以当做值赋值给变量结果11函数名可以当做容器类的元素deffunc():print(1)deffunc2():print(2)li[func,func2]print(li) #函数名可以当做元素放到容器里结果[, ](打印的是函数的内存地址列表里的函数可以加括号打印的是函数执行的结果及列表的返回的None)deffunc():print(1)deffunc2():print(2)li[func(),func2()]print(li) #函数名可以当做元素放到容器里结果12[None, None]函数名可以当做函数的参数:deffunc():print(吃了么)deffunc2(fn):print(我是1)fn()#执行传递过来的fnprint(我是2)func2(func)#把函数func当成参数传递给func2的参数fn.结果 我是1吃了么我是2函数名可以作为函数的返回值deffunc_1():print(这里是函数1)deffunc_2():print(这里是函数2)print(这里是函数3)returnfunc_2fnfunc_1()#执行函数1. 函数1返回的是函数2, 这时fn指向的就是上面函数2fn() #执行func_2函数结果这里是函数1这里是函数3这里是函数2deffunc():defaa():print(2)returnNonereturn aa() #return None#func() # func() Noneprint(func())结果2None例题li []for i in range(3): #for循环三次三次最终结果i2def func(x): #定义函数形参为xprint(x*i) #打印形参与i(2)相乘的结果li.append(func) #将func依此添加到li列表当中循环三次添加三个#此时列表里的func虽然外表相同定义的函数相同但内存地址不一样存在三个内存地址for func in li: #将列表里的函数循环出来func(2) #依此执行func函数实参数为2结果444此时我要想将结果打印为024只需定义一个数即可li[]for i in range(3): #for循环三次循环为 i (012)def func(x,yi): #定义函数形参为xy循环的 i 值print(x*y) #打印形参与y(012)相乘的结果li.append(func) #将func依此添加到li列表当中循环三次添加三个#此时列表里的func虽然外表相同定义的函数相同但内存地址不一样存在三个内存地址for func in li: #将列表里的函数循环出来func(2) #依此执行func函数实参数为2闭包什么是闭包? 闭包就是内层函数, 对外层函数(非全局)的变量的引用. 叫闭包# 1.一个嵌套函数# 2.在嵌套函数的内部函数使用外部(非全局的变量)# 满足以上两条就是闭包defwrapper():a 10definner():print(a)print(inner.__closure__) #不是None 就是闭包inner()wrapper()结果:(,)10将里边的函数名当做参数返回给调用者defouter():name alex#内部函数definner():print(name)returninnerfn outer() #访问外部函数, 获取到内部函数的函数地址fn() #访问内部函数结果alex例money 10#全局里存放会有污染和不安全的现象defwrapper():money 10definner(num):global money #从全局调用moneymoney numprint(money)returninnerwrapper()(100) #第二个括号是return的返回值inner的执行实参为100# python中闭包,会进行内存驻留, 普通函数执行完后就销毁了# 全局里存放会有污染和不安全的现象# 面试必问,装饰器 -- 装饰器的本质就是闭包# 闭包有个弊端:会出现内存泄漏迭代器可迭代对象有哪些:str list tuple dic set可迭代对象可以被for的就是可迭代对象# Python 协议# 具有.__iter__方法的就是可迭代对象# a 对象.__iter__ # 创建一个迭代器# 具有__iter__和__next__就是一个迭代器可以for循环的就有__iter__方法,包括range.这里的__iter__是帮助我们获取到对象的迭代器.我们使用迭代器中的__next__()来获取到一个迭代器的元素li [1,2,3]a li.__iter__()print(a.__next__())print(a.__next__()) #一个一个取print(a.__next__())结果123我们使用while循环和迭代器来模拟for循环: 必须要会lst [6,5,4]l lst.__iter__()while 1:try:i l.__next__()print(i)except StopIteration #当遇到报错的时候就break退出break# 迭代器特性:# 惰性机制# 不能从下向上走# 一次性的,用完就没了小总结Iterable: 可迭代对象. 内部包含__iter__()函数 Iterator: 迭代器. 内部包含__iter__() 同时包含__next__().迭代器的特点: 1. 节省内存. 2. 惰性机制 3. 不能反复, 只能向下执行.我们可以把要迭代的内容当成子弹. 然后呢. 获取到迭代器__iter__(), 就把子弹都装在弹夹中. 然后发射就是__next__()把每一个子弹(元素)打出来. 也就是说, for循环的时候.一开始的 时候是__iter__()来获取迭代器. 后面每次获取元素都是通过__next__()来完成的. 当程序遇到 StopIteration将结束循环.递归# 1. 自己玩自己 (自己调用自己本身)# 2. 玩的有限制 (有明确结束条件)count 0deffunc():globalcountcount 1print(count)if count 4: #当count4时返回returnfunc()#产生递归现象func()打印1到100deffunc(n):n1print(n)if n 100:returnfunc(n)func(0)例题deffunc(age):print(age) #最后打印4deffunc1(age):print(age) #3func(age1) #执行func,实参数位4deffunc2(age):print(age) #2func1(age1) #执行func1实参数位3func2(2)打印结果234作业1.写函数传入n个数返回字典{‘max’:最大值,’min’:最小值}例如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}(此题用到max(),min()内置函数)2.写函数传入一个参数n返回n的阶乘例如:cal(7) 计算7*6*5*4*3*2*13.写函数返回一个扑克牌列表里面有52项每一项是一个元组例如[(‘红心’2),(‘草花’2), …(‘黑桃’‘A’)]4. 相关面试题(先从纸上写好答案然后在运行)def calc(a,b,c,d1,e2):return (ab)*(c-d)e请分别写出下列标号代码的输出结果如果出错请写出Error。print(calc(1,2,3,4,5))_____print(calc(1,2))____print(calc(e4,c5,a2,b3))___print(calc(1,2,3))_____print(calc(1,2,3,e4))____print(calc(1,2,3,d5,4))_____下面代码打印的结果分别是_________,________,________.def extendList(val,list[]):list.append(val)returnlistlist1 extendList(10)list2 extendList(123,[])list3 extendList(a)print(list1%s%list1)print(list2%s%list2)print(list3%s%list3)5.写代码完成99乘法表.(升级题)1 * 1 12 * 1 2 2 * 2 43 * 1 3 3 * 2 6 3 * 3 9......9 * 1 9 9 * 2 18 9 * 3 27 9 * 4 36 9 * 5 45 9 * 6 54 9 * 7 63 9 * 8 72 9 * 9 81