1.命名空間:
分三種:全域性命名空間,區域性命名空間,內建命名空間。
載入順序:內建命名空間→全域性命名空間→區域性命名空間
取值順序:區域性命名空間→全域性命名空間→內建命名空間
2.作用域:
作用域就是作用範圍,按照生效範圍可以分為全域性作用域和區域性作用域。
全域性作用域:包含 內建命名空間、全域性命名空間,在整個檔案的任意位置都能被引用、全域性有效
區域性作用域:區域性命名空間,只能在區域性範圍內生效
小範圍可以用大範圍,大範圍不能用小範圍
在小範圍內,如果要用乙個變數,是當前這個小範圍有的,就用自己的
如果在小範圍內沒有,就用上一級的,上一級沒有就用上上一級的,以此類推。如果都沒有,報錯
3.globals方法 (全域性改變)
a = 10
def func():
global a
a = 20
print(a)
func()
print(a)
4.locals方法
def func():
a = 12
b = 20
print(locals())
print(globals())
func()
在區域性呼叫globals和locals
5.函式的巢狀和作用域鏈
巢狀定義:定義在內部的函式無法直接在全域性被呼叫
def f1():
def f2():
def f3():
print("in f3")
print("in f2")
f3()
print("in f1")
f2()
f1()
6.nonlocal關鍵字
# 1.外部必須有這個變數
# 2.在內部函式宣告nonlocal變數之前不能再出現同名變數
# 3.內部修改這個變數如果想在外部有這個變數的第一層函式中生效
def f1():
a = 1
def f2():
nonlocal a
a = 2
f2()
print('a in f1 : ',a)
f1()
7.函式的本質:
①簡單的說就是乙個變數,儲存了函式所在的記憶體位址
②具體來說:1.可以當變數被引用;2.可以被當作容器型別的元素;3.可當作函式的引數和返回值
8.閉包函式:
定義: 1.閉:內部的函式;2.包:包含外部函式的變數(就是用到外部函式的變數)
固定格式:
def func():
name = 'eva'
def inner():
print(name)
return inner
f = func()
f()9.判斷閉包函式的方法: __closure__
#輸出的__closure__有cell元素 :是閉包函式
def func():
name = 'eva'
def inner():
print(name)
print(inner.__closure__)
return inner
f = func()
f()#輸出的__closure__為none :不是閉包函式
name = 'egon'
def func2():
def inner():
print(name)
print(inner.__closure__)
return inner
f2 = func2()
f2()
10.閉包巢狀:
字典與函式(Python day 12)
只要外字典的鍵和內字典的值 a 002 003 for key,val in a.items 開啟一層字典 print key,end for key 1,val 1 in val.items 開啟下一層字典 print val 1,end print 思想是 先把外字典開啟,把外字典的鍵給輸出,然...
刻意練習Python DAY12
1.new class capstr str def new cls,string string string.upper return str.new cls,string a capstr i love fish a i love fish 2.del classc def init self ...
從零自學Python day12
集合和字典元組列表相似,也是能裝有多個值 元素 內容我也不知道該咋叫了 的一種資料型別 不同的是,集合中的元素是無序的,集合 set 是乙個無序的不重複元素序列。集合的建立方法是用1.花括號 這個與字典相同,因為字典中是鍵值對,所以不會弄混,值得注意的是,當建立空集合的時候,只能用第二種方法,因為用...