day 12 函式名的應用 閉包 迭代器

2022-04-10 17:57:46 字數 1490 閱讀 5522

今日主要內容

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.可以保護變數不收侵害 ...