python3精要(19)-全局变量global和工厂函数,lambda,变量作用范围,nonlocal
生活随笔
收集整理的這篇文章主要介紹了
python3精要(19)-全局变量global和工厂函数,lambda,变量作用范围,nonlocal
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、全局變量global語句:
1、全局變量是位于模塊文件的內部頂層的變量名
2、全局變量是在函數內被賦值的話,必須通過global聲明
3、全局變量名在函數內部不經營聲明也可被引用
二、工廠函數
函數是對象,因此函數對象可作為普通對象可以返回,并可調用,這就是工廠函數的原理,也是lambda 匿名函數的工作原理
def makefun(a):return (lambda x: x+a)myfun=makefun(2) print(myfun(7)) print(myfun(3)) myfun=makefun(8) print(myfun(7)) print(myfun(3)) 9 5 15 11 def makefuns1(a):funs=[]for i in range(a,a+8):funs.append(lambda x: x+i)return funsdef makefuns2(a):funs=[]for i in range(a,a+8):funs.append(lambda x,i=i: x+i)return funsmyfun=makefuns1(2) for i in range(8):print(myfun[i](7)) print(".............") myfun=makefuns2(2) for i in range(8):print(myfun[i](7))makefuns1試圖創建一個函數列表對象,每個列表中的元素調用,都可使用新的i來調用。但失敗,因為每次調用函數,都是在調用時才調取參數的值,而此時的i指向的是同一個變量i的引用。
makefuns2試圖創建一個函數列表對象,每個列表中的元素調用,都可使用新的i來調用,可成功調用
nonlocal修改嵌套函數的作用域中的變量,即使該函數已經返回
def makefuns(a):b=adef addfun(x):nonlocal b result=x+bb+=1return resultreturn addfunmyfun=makefuns(2) for i in range(5):print(myfun(7)) 9 10 11 12 13總結
以上是生活随笔為你收集整理的python3精要(19)-全局变量global和工厂函数,lambda,变量作用范围,nonlocal的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring+Mybatis使用Mapp
- 下一篇: python3精要(20)-函数(1)