日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

第一类对象

發(fā)布時(shí)間:2023/12/16 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一类对象 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
函數(shù)名的使用及第一類對(duì)象:
查看函數(shù)的內(nèi)存地址 print(函數(shù)名)
函數(shù)可以當(dāng)做值,賦值給變量
函數(shù)可以參數(shù),傳遞個(gè)函數(shù)的形參 函數(shù)當(dāng)參數(shù)的時(shí)候不能加括號(hào)
函數(shù)可以當(dāng)返回值 當(dāng)返回值的時(shí)候不括號(hào)
函數(shù)名可以元素存在容器里
1 def func1(): 2 print("念陽(yáng)梟") 3 def func2(): 4 print("李星云") 5 def func3(): 6 print("百里登風(fēng)") 7 def func4(): 8 print("李大白") 9 lst=[func1,func2,func3,func4] 10 #lst[0]() 11 for el in lst: # el是裂變中的每一項(xiàng) 12 el() # 拿到函數(shù),執(zhí)行函數(shù)

? ?可以把函數(shù)放到容器里:

1 def func1(): 2 print("念陽(yáng)梟") 3 def func2(): 4 print("李星云") 5 def func3(): 6 print("百里登風(fēng)") 7 def func4(): 8 print("李大白") 9 lst=[func1(),func2(),func3(),func4()] # 函數(shù)加上()就是調(diào)用函數(shù),由于之前的函數(shù)沒(méi)有return值,所以打印列表中,裝的是None,這樣沒(méi)有任何作用! 10 print(lst) 函數(shù)名可以像返回值一樣返回:
1 def wrapper(): 2 def inner(): 3 print("鍋包肉") 4 return inner # 函數(shù)名可以像返回值一樣返回 5 ret=wrapper() 6 ret() # 在函數(shù)外面訪問(wèn)了函數(shù)內(nèi)部的函數(shù) 函數(shù)可以傳參:
1 def func1(): 2 print("念陽(yáng)梟") 3 def func2(): 4 print("李星云") 5 def func3(): 6 print("百里登風(fēng)") 7 def func4(): 8 print("李大白") 9 # 代理,裝飾器的雛形 10 def proxy(a): # a就是變量,形參 函數(shù)可以傳參 11 print("我是代理") 12 a() 13 print("代理執(zhí)行完畢") 14 proxy(func1) 15 proxy(func2) 16 proxy(func3) 閉包:
嵌套函數(shù),在嵌套函數(shù)內(nèi),內(nèi)部函數(shù)使用外部變量(非全局變量) 就是一個(gè)閉包 閉包可以多層 好處,
保護(hù)變量不會(huì)被外界修改
函數(shù)內(nèi)使用到的變量會(huì)生命周期延長(zhǎng)
節(jié)省開(kāi)辟空間和銷毀空間的時(shí)間 迭代器:
可迭代對(duì)象: 遵守可迭代對(duì)象的協(xié)議 具有__iter__()方法
除去整型和布爾值剩下現(xiàn)已知都是 迭代器: 遵守迭代器的協(xié)議 具有__iter__()方法和__next__()方法
創(chuàng)建一個(gè)迭代器 == 可迭代對(duì)象.__iter__()
使用迭代器 == 迭代器.__next__() 1 lst=["張飛","亞索","呂布","雅典娜"] 2 it=lst.__iter__() #拿到的是迭代器 3 print(it.__next__()) #下一個(gè) 4 print(it.__next__()) #下一個(gè) 5 print(it.__next__()) #下一個(gè) 6 print(it.__next__()) #下一個(gè) 7 8 it=lst.__iter__() # 用此語(yǔ)句重新獲取迭代器,迭代器只能一次過(guò) 只能向下執(zhí)行,不能反復(fù)
結(jié)束的時(shí)候會(huì)給我們?nèi)映鰜?lái)一個(gè)錯(cuò)誤, StopIteration

用while模擬for循環(huán) for el in lst:
1 lst=["王者榮耀","英雄聯(lián)盟","QQ飛車","穿越火線"] 2 it=lst.__iter__() # 獲取迭代器0 3 while 1: #循環(huán) 4 try: #嘗試 5 el=it.__next__() # 拿數(shù)據(jù) 6 print(el) 7 except StopIteration: # 出了錯(cuò)誤,except解決,數(shù)據(jù)拿完 8 break # 結(jié)束循環(huán)

?

? 迭代器機(jī)制:
不能回退
惰性機(jī)制
一次性的 查看是迭代器是否是可迭代對(duì)象:
from collections import Iterator,Iterable
print(isinstance('查看的內(nèi)容',Iterable)) # 查看是否是可迭代的
print(isinstance('查看的內(nèi)容',Iterator)) # 查看是否是迭代器 迭代器一定是可迭代的,但是可迭代的不一定是迭代器 ? ? ? ? ?

轉(zhuǎn)載于:https://www.cnblogs.com/53Dawns/p/10251834.html

總結(jié)

以上是生活随笔為你收集整理的第一类对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。