今日主要內容
1, 函式名的應用,第一類物件
函式名可以像變數一樣進行使用#再函式名後面新增() 才是對函式的呼叫, 否則列印的是函式的記憶體位址
1.賦值
2.作為list元素
3.作為引數
def func():print("吃了了麼")
def func2(fn):
print("我是func2")
fn() # 執⾏行行傳遞過來的fn
print("我是func2")
func2(func) # 把函式func當成引數傳遞給func2的引數fn
4.作為返回值
2, 閉包
內部函式訪問外部函式的區域性變數.:(閉包就是內層函式, 對外層函式(非全域性)的變數量的引⽤用. 叫閉包)
作用:可以讓乙個變數常駐記憶體
def func():name = "alex" #常駐記憶體
def inner()
print(name) #在內層函式中呼叫了外層函式
print(inner.__closure__) #檢視inner是否是閉包,返回有東西是閉包,沒閉包返回none
return inner
a =func
a()()
閉包的檢測:
使用__closure__來檢測函式是否是閉包. 使⽤用函式名.__closure__返回cell就是
閉包. 返回none就不是閉包
可以實現再函式外邊呼叫內部函式
例:
def outer():name = "alex"
def inner():
print(name) #閉包
return inner
fn = outer() # 訪問外部函式, 獲取到內部函式的函式位址
fn() #訪問內部函式
好處:1.安全 放在區域性內,防止其它程式更改變數。所以不要把變數放在全域性內
2.常駐記憶體. 提高效率 隨時可能使用
3, 迭代器
可迭代物件(iterable):內部包含__iter__().
迭代器(iterator): 內部含有__iter__() __next__()
str, list, tuple, set, dict
f, range
迭代器的特點:
1.省記憶體
2.惰性機制
3.只能向前.
day12 閉包函式 匿名函式 lambda
閉包函式 閉包函式的定義 如果內函式使用了外函式的區域性變數 並且外函式把內函式返回出來的過程 叫做閉包 裡面的內函式是閉包函式 乙個簡單的閉包函式示例 def songyunjie family father 王健林 deff hobby print 這是我爸爸 format father 內函式...
Python函式名應用 閉包 迭代器
函式名的應用.函式名是乙個變數,但它是乙個特殊的變數,與括號配合可以執行函式的變數.1.函式名的記憶體位址 def func print 呵呵 print func 2.函式名可以賦值給其他變數 def func print 呵呵 print func a func 把函式當成乙個變數賦值給另乙個變...
day 10 函式名,閉包,迭代器
1.函式名的使用 1.函式名是乙個變數,函式名儲存的是函式的記憶體位址 2.函式名可以賦值給其他變數 3.函式名可以當容器類物件的元素 4.函式名可以當其他函式的引數 5.函式名可以做函式的返回值 2.閉包 閉包就是內層函式對外層函式 非全域性 變數的使用 1.閉包的作用 1.可以保護變數不收侵害 ...