Python函式名應用 閉包 迭代器

2021-09-24 00:02:24 字數 1864 閱讀 5235

函式名的應用.

函式名是乙個變數, 但它是乙個特殊的變數, 與括號配合可以執行函式的變數.

1. 函式名的記憶體位址

def func():

print(「呵呵」)

print(func)

2. 函式名可以賦值給其他變數

def func():

print(「呵呵」)

print(func)

a = func # 把函式當成乙個變數賦值給另乙個變數

a() # 函式呼叫 func()

3. 函式名可以當做容器類的元素

def func1():

print(「呵呵」)

def func2():

print(「呵呵」)

def func3():

print(「呵呵」)

def func4():

print(「呵呵」)

lst = [func1, func2, func3]

for i in lst:

i()函式名可以當做函式的引數

def func():

print(「吃了麼」)

def func2(fn):

print(「我是func2」)

fn() # 執行傳遞過來的fn

print(「我是func2」)

func2(func) # 把函式func當成引數傳遞給func2的引數fn.

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

def func_1():

print(「這裡是函式1」)

def func_2():

print(「這裡是函式2」)

print(「這裡是函式1」)

return func_2

fn = func_1() # 執行函式1. 函式1返回的是函式2, 這時fn指向的就是上面函式2

fn() # 執行上面返回的函式

閉包什麼是閉包? 閉包就是內層函式, 對外層函式(非全域性)的變數的引用. 叫閉包

def outer():

a = 10 # 很耗時

def inner():

print(a)

return inner

ret = outer()

ret()

ret()

注意:我們可以使用__closure__來檢測函式是否是閉包. 使用函式名.__closure__返回cell就是閉包. 返回none就不是閉包

def func1():

name = 「disman」

def func2():

print(name) # 閉包

func2()

print(func2.closure) # (,)

func1()

閉包好處:

1. 保護變數

2. 可以讓乙個變數常駐記憶體

3. 迭代器

iter() 可迭代物件. 獲取迭代器

next() +iter() 迭代器

特點:1. 惰性機制

2. 只能向前

3. 節省記憶體

for迴圈的內部就是迭代器

lst = [1,2,4]

it = lst.iter() # 獲取迭代器

while 1:

try:

it.next() # 從迭代器中獲取資料

except stopiteration:

break

iterable: 可迭代的

iterator: 迭代器

原文:

python 函式名的使用,閉包,迭代器

函式名是乙個變數,但它是乙個特殊的變數,與括號配合可以執行函式 函式物件可以像變數一樣進行賦值,還可以作為列表的元素進行使用,可以作為返回值返回,可以作為引數進行傳遞 1.函式名的記憶體位址 def func print 呵呵 print func 結果 2.函式名可以賦值給其他變數 def fun...

函式名的使用,閉包,迭代器

函式名的使用 1,函式名可以當做值賦值給變數 2,函式名可以當引數去傳遞,傳遞函式名的時候,如說 就是傳遞這個函式的返回值 3,函式名可以當做返回值被返回,返回值不能加括號,接力要一層一層傳遞,中間斷了就傳不到 def foo print 2 def func msg print 1 return ...

函式名的應用和閉包

函式名的命名規範和變數是一樣的 函式名其實就是變數 可以作為列表中的元素進行儲存,def func1 pass def func2 pass lst func1,func2 for el in lst el 可以作為引數傳遞給函式 def func pass def proxy fn proxy f...