day10(閉包 import模組 函式命名空間)

2022-05-23 16:24:11 字數 2582 閱讀 2805

#

閉包:巢狀函式,內部函式呼叫外部函式的變數

#def outer():

#a = 1

#def inner():

#print(a)

#inner()

#outer()

defouter():

a = 1

definner():

print

(a)

return

inner

inn =outer()

inn()

#import urllib #模組

from urllib.request import

urlopen

#ret = urlopen('').read()

#print(ret)

#def get_url():

#url = ''

#ret = urlopen(url).read()

#print(ret)##

get_url()

defget_url():

url = '

'def

get():

ret =urlopen(url).read()

print

(ret)

return

getget_func =get_url()

get_func()

#

def max(a,b):

#return a if a>b else b##

def the_max(x,y,z): #函式的巢狀呼叫

#c = max(x,y)

#return max(c,z)##

print(the_max(1,2,3))

#函式的巢狀定義

#內部函式可以使用外部函式的變數

#a = 1

#def outer():

#a = 1

#def inner():

#a = 2

#def inner2():

#nonlocal a #宣告了乙個上面第一層區域性變數

#a += 1 #不可變資料型別的修改

#inner2()

#print('##a## : ', a)

#inner()

#print('**a** : ',a)

#outer()

#print('全域性 :',a)

#nonlocal 只能用於區域性變數 找上層中離當前函式最近一層的區域性變數

#宣告了nonlocal的內部函式的變數修改會影響到 離當前函式最近一層的區域性變數

#對全域性無效

#對區域性 也只是對 最近的 一層 有影響

#a = 0

#def outer():

## a = 1

#def inner():

## a = 2

#def inner2():

#nonlocal a

#print(a)

#inner2()

#inner()##

# outer()

#def func():

#print(123)##

# func() #函式名就是記憶體位址

#func2 = func #函式名可以賦值

#func2()##

l = [func,func2] #函式名可以作為容器型別的元素

#print(l)

#for i in l:

#i()

deffunc():

print(123)

defwahaha(f):

f()return f #

函式名可以作為函式的返回值

qqxing = wahaha(func) #

函式名可以作為函式的引數

qqxing()

#命名空間 有三種

#內建命名空間 —— python直譯器

# 就是python直譯器一啟動就可以使用的名字儲存在內建命名空間中

# 內建的名字在啟動直譯器的時候被載入進記憶體裡

#全域性命名空間 —— 我們寫的**但不是函式中的**

# 是在程式從上到下被執行的過程中依次載入進記憶體的

# 放置了我們設定的所有變數名和函式名

#區域性命名空間 —— 函式

# 就是函式內部定義的名字

# 當呼叫函式的時候 才會產生這個命名空間 隨著函式執行的結束 這個命名空間就又消失了

#在區域性:可以使用全域性、內建命名空間中的名字

#在全域性:可以使用內建命名空間中的名字,但是不能用區域性中使用

#在內建:不能使用區域性和全域性的名字的

#globals 永遠列印全域性的名字

#locals 輸出什麼 根據locals所在的位置

# 作用域兩種

# 全域性作用域 —— 作用在全域性 —— 內建和全域性名字空間中的名字都屬於全域性作用域 ——globals()

# 區域性作用域 —— 作用在區域性 —— 函式(區域性名字空間中的名字屬於區域性作用域) ——locals()

python之路 day10 閉包函式

1.命名關鍵字引數 格式 在 後面的引數都是命名關鍵字引數 特點 1.必須被傳值 2.約束函式的呼叫者必須按照key value的形式傳值 3.約束函式的呼叫者必須用我們指定的key名 1 def auth args,kwargs 2 3使用方式auth name egon pwd 123 4 pa...

day 10 函式名,閉包,迭代器

1.函式名的使用 1.函式名是乙個變數,函式名儲存的是函式的記憶體位址 2.函式名可以賦值給其他變數 3.函式名可以當容器類物件的元素 4.函式名可以當其他函式的引數 5.函式名可以做函式的返回值 2.閉包 閉包就是內層函式對外層函式 非全域性 變數的使用 1.閉包的作用 1.可以保護變數不收侵害 ...

閉關日記 Day10

小雨。我想想怎麼寫,先挖坑。d 確認4.1 考科目三,估計過幾天要開始練車了。晚上去工作室敲 剛好看到他們在筆試,明天就是我筆試了,祝一切順利 專案f的電鋸聲識別,開始用比較勉強的方式實現,算是折衷吧,迫於時間,暫時如此,精準的識別想來是我目前做不出來的,如果畢設做這個,倒是也可以好好研究一些聲音方...