python基础之名称空间和作用域、函数嵌套
生活随笔
收集整理的這篇文章主要介紹了
python基础之名称空间和作用域、函数嵌套
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、名稱空間
1、定義:存放名字與值的綁定關(guān)系
2、名稱空間分為:內(nèi)置名稱空間、全局名稱空間、局部名稱空間
內(nèi)置名稱空間:python解釋器自帶的名字,python解釋器啟動就會生成
全局名稱空間:文件級別定義的名字都會存放與全局名稱空間,執(zhí)行python文件時會產(chǎn)生
局部名稱空間:定義在函數(shù)內(nèi)部的名字,局部名稱空間只有在調(diào)用函數(shù)時才會生效,函數(shù)調(diào)用結(jié)束則失效
3、加載的順序:三者的加載順序:內(nèi)置名稱空間->全局名稱空間->局部名稱空間
4、取值的順序:局部名稱空間->全局名稱空間->內(nèi)置名稱空間7
# # max=10 # def func(): #x=1 # # max=20 # print(max) # # # func()# max=10 # # def func(): #x=1 # max=20 # # print(max) # func() # # # print(max) # # # x=0 # def f1(): # # x=1 # def f2(): # # x=2 # def f3(): # # x=3 # print(x) # f3() # f2() # # f1()二、作用域
1、范圍:
全局作用域:內(nèi)置名稱空間與全局名稱空間的名字屬于全局范圍,在整個文件的任意位置都能被引用,全局有效
局部作用域:局部名稱空間的名字屬于局部范圍,只在函數(shù)內(nèi)部可以被引用,局部有效
# x=1 # def foo(): # def f2(): # print(x) # f2() # def bar(): # print(x) # # foo() # bar()# def f1(): # x=1 # def f2(): #f2=value # # x=2 # print(x) # f2() # f1() x=1 def func():x=2def f1():pass# print(dir(globals()['__builtins__'])) #全局作用域name# print(locals()) #局部作用域name func()print(globals() is locals())2、作用順序是:局部作用域》》》》》》全局作用域
三、函數(shù)嵌套
1、函數(shù)的嵌套定義
def f1():def f2():def f3():print('from f3')print('from f2')f3()print('from f1')f2() # print(f1) f1()2、函數(shù)的嵌套調(diào)用
def max2(x,y):if x > y:return xelse:return ydef max4(a,b,c,d):res1=max2(a,b) #23res2=max2(res1,c) #23res3=max2(res2,d) #31return res3 print(max4(11,23,-7,31))?
轉(zhuǎn)載于:https://www.cnblogs.com/fenglinglf/p/7003115.html
總結(jié)
以上是生活随笔為你收集整理的python基础之名称空间和作用域、函数嵌套的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有关 Lambda linq练习 有待
- 下一篇: USACO 1.2 Milking Co