函式名的應用.
函式名是乙個變數, 但它是乙個特殊的變數, 與括號配合可以執行函式的變數.
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...