python day12 函式高階

2022-05-14 16:59:35 字數 1891 閱讀 4623

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.花括號 這個與字典相同,因為字典中是鍵值對,所以不會弄混,值得注意的是,當建立空集合的時候,只能用第二種方法,因為用...