在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一些值得玩味的python代碼

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-03-30 17:32 ? 次閱讀

選取了 6 個自己認為值得玩味的 python 代碼,希望對正在學習 python 的你有所幫助。

1、類有兩個方法,一個是 __new__,一個是 __init__,有什么區別,哪個會先執行呢?

classtest(object):
def__init__(self):
print("test->__init__")

def__new__(cls):
print("test->__new__")
returnsuper().__new__(cls)

a=test()

運行結果如下:

test->__new__
test->__init__

再來看另一個例子

classtest2(object):
def__init__(self):
print("test2->__init__")

def__new__(cls):
print("test2->__new__")
returnobject()

b=test2()

運行結果如下:

test2->__new__

這里給出官方的解釋:__init__ 作用是類實例進行初始化,第一個參數為 self,代表對象本身,可以沒有返回值。__new__ 則是返回一個新的類的實例,第一個參數是 cls 代表該類本身,必須有返回值。很明顯,類先實例化才能產能對象,顯然是 __new__ 先執行,然后再 __init__,實際上,只要 __new__ 返回的是類本身的實例,它會自動調用 __init__ 進行初始化。但是有例外,如果 __new__ 返回的是其他類的實例,則它不會調用當前類的 __init__。下面我們分別輸出下對象 a 和對象 b 的類型:

print(type(a))
#

print(type(b))
#'object'>'__main__.test'>

可以看出,a 是 test 類的一個對象,而 b 就是 object 的對象。

參考文檔:

https://docs.python.org/3/reference/datamodel.html?highlight=__new__#object.__new__

2、map 函數返回的對象

map()函數第一個參數是 fun,第二個參數是一般是 list,第三個參數可以寫 list,也可以不寫,作用就是對列表中 list 的每個元素順序調用函數 fun 。

>>>b=map(lambdax:x*x,[1,2,3])
>>>[iforiinb]
[1,4,9]
>>>[iforiinb]
[]
>>>

有沒有發現,第二次輸出 b 中的元素時,發現變成空了。原因是 map() 函數返回的是一個迭代器,并用對返回結果使用了 yield,這樣做的目的在于節省內存。
舉個例子:

#encoding:UTF-8
defyield_test(n):
foriinrange(n):
yieldcall(i)
#做一些其它的事情

defcall(i):
returni*2

#使用for循環
x=yield_test(5)
print([iforiinx])
print([iforiinx])

執行結果為:

[0,2,4,6,8]
[]

這里如果不用 yield,那么在列表中的元素非常大時,將會全部裝入內存,這是非常浪費內存的,同時也會降低效率。

3、正則表達式中 compile 是否多此一舉?

比如現在有個需求,對于文本

中國

,用正則匹配出標簽里面的“中國”,其中 class 的類名是不確定的。有兩種方法,代碼如下:

>>>importre
>>>text='中國'
>>>#方法一
...
>>>re.findall('(.*)',text)
['中國']
>>>#方法二
...
>>>regex='(.*)'
>>>pattern=re.compile(regex)
>>>re.findall(pattern,text)
['中國']
>>>

這里為什么要用 compile 多寫兩行代碼呢?原因是 compile 將正則表達式編譯成一個對象,加快速度,并重復使用。

4、[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]

>>>[jforiin[[1,2],[3,4],[5,6]]forjini]
[1,2,3,4,5,6]
>>>

5、一行代碼將字符串 "->" 插入到 "abcdefg"中每個字符的中間

>>>"->".join("abcdef")
'a->b->c->d->e->f'
>>>

這里也建議多使用 os.path.join() 來拼接操作系統的文件路徑。

6、zip 函數

zip() 函數在運算時,會以一個或多個序列(可迭代對象)做為參數,返回一個元組的列表。同時將這些序列中并排的元素配對。zip() 參數可以接受任何類型的序列,同時也可以有兩個以上的參數;當傳入參數的長度不同時,zip 能自動以最短序列長度為準進行截取,獲得元組。

>>>a=[1,2]
>>>b=(3,4)
>>>zip(a,b)

>>>foriinzip(a,b):
...print(i)
...
(1,3)
(2,4)
>>>a="ab"
>>>b="xyz"
>>>foriinzip(a,b):
...print(i)
...
('a','x')
('b','y')
>>>objectat0x000001a20201aa08>

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4363

    瀏覽量

    63770
  • 代碼
    +關注

    關注

    30

    文章

    4875

    瀏覽量

    69952
  • python
    +關注

    關注

    56

    文章

    4821

    瀏覽量

    85779
收藏 人收藏

    評論

    相關推薦

    在i.MX RT 1176上正常運行代碼時與使用IAR調試代碼時存在一些奇怪的差異,為什么?

    我在 i.MX RT 1176 上正常運行代碼時的行為與使用 IAR 調試代碼時的行為之間存在一些奇怪的差異,并注意到這是由于堆棧指針的初始化方式造成的。 我的重置向量表將其指向 DTC 的頂部
    發表于 03-17 07:26

    創建了用于OpenVINO?推理的自定義C++和Python代碼,從C++代碼中獲得的結果與Python代碼不同是為什么?

    創建了用于OpenVINO?推理的自定義 C++ 和 Python* 代碼。 在兩個推理過程中使用相同的圖像和模型。 從 C++ 代碼中獲得的結果與 Python*
    發表于 03-06 06:22

    使用Python實現xgboost教程

    使用Python實現XGBoost模型通常涉及以下幾個步驟:數據準備、模型訓練、模型評估和模型預測。以下是個詳細的教程,指導你如何在Python中使用XGBoost。 1. 安裝XGBoost
    的頭像 發表于 01-19 11:21 ?933次閱讀

    華為云 Flexus X 實例下的場景體驗——小企業使用 Python 語言——超迅速搭建簡單公網 API 接口服務

    ? 前言 小企業為了快速搞定一些接口功能如果不使用 Python 的話相對來說復雜度還是很高的,這里我來通過【華為云 Flexus X 實例】來迅速的搭建Python 的 Web
    的頭像 發表于 12-27 13:46 ?365次閱讀
    華為云 Flexus X 實例下的場景體驗——小企業使用 <b class='flag-5'>Python</b> 語言——超迅速搭建簡單公網 API 接口服務

    Python中dict支持多個key的方法

    不直接支持使用多個鍵進行索引,但我們可以通過一些技巧來實現這功能。 下面,我將展示幾種處理包含多個鍵的字典的方法,并提供詳細的代碼示例。 1.方法:使用元組作為鍵 我們可以將多個鍵
    的頭像 發表于 11-29 15:59 ?368次閱讀

    使用Python進行串口通信的案例

    當然!以下是個使用Python進行串口通信的簡單示例。這個示例展示了如何配置串口、發送數據以及接收數據。我們將使用 pyserial 庫,這是個非常流行的用于串口通信的Python
    的頭像 發表于 11-22 09:11 ?1024次閱讀

    一些常見的動態電路

    無論是模電還是數電,理論知識相對來說還是比較枯燥,各種電路原理理解清楚不算容易,換種生動形象的方式或許會增加一些趣味性,也更容易理解這些知識。下面整理了一些常見的電路,以動態圖形的方式展示。 整流
    的頭像 發表于 11-16 09:26 ?824次閱讀
    <b class='flag-5'>一些</b>常見的動態電路

    分享一些常見的電路

    理解模電和數電的電路原理對于初學者來說可能比較困難,但通過一些生動的教學方法和資源,可以有效地提高學習興趣和理解能力。 下面整理了一些常見的電路,以動態圖形的方式展示。 整流電路 單相橋式整流
    的頭像 發表于 11-13 09:28 ?615次閱讀
    分享<b class='flag-5'>一些</b>常見的電路

    使用Python進行圖像處理

    下面是個關于使用Python在幾行代碼中分析城市輪廓線的快速教程。
    的頭像 發表于 11-07 10:14 ?471次閱讀
    使用<b class='flag-5'>Python</b>進行圖像處理

    Python常用函數大全

    Python 世界里,有一些寶藏函數和模塊,它們可以讓你編程更輕松、代碼更高效。這篇文章將帶你一一認識這些神器,讓你的開發生活瞬間輕松不少!
    的頭像 發表于 10-27 17:20 ?666次閱讀

    LED驅動器應用的一些指南和技巧

    電子發燒友網站提供《LED驅動器應用的一些指南和技巧.pdf》資料免費下載
    發表于 09-25 11:35 ?0次下載
    LED驅動器應用的<b class='flag-5'>一些</b>指南和技巧

    如何實現Python復制文件操作

    Python 中有許多“開蓋即食”的模塊(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在這篇文章中,你將會看到一些Python 實現文件復制的特殊方法。下面我們開始學習這九種不同的方法來實現
    的頭像 發表于 07-18 14:53 ?620次閱讀

    opencv-python和opencv樣嗎

    是OpenCV的Python語言接口,它允許開發者使用Python語言來調用OpenCV庫的功能。 雖然OpenCV和OpenCV-Python在功能上有很多相似之處,但它們之間還
    的頭像 發表于 07-16 10:38 ?1766次閱讀

    python訓練出的模型怎么調用

    Python中,訓練出的模型可以通過多種方式進行調用。 1. 模型保存與加載 在Python中,訓練好的模型需要被保存,以便在其他程序或會話中使用。以下是一些常用的模型保存和加載方法。 1.1
    的頭像 發表于 07-11 10:15 ?3056次閱讀

    使用Python進行自然語言處理

    在探討使用Python進行自然語言處理(NLP)的廣闊領域時,我們首先需要理解NLP的基本概念、其重要性、Python在NLP中的優勢,以及如何通過Python實現一些基礎的NLP任務
    的頭像 發表于 07-04 14:40 ?617次閱讀
    主站蜘蛛池模板: 四虎影院在线观看网站 | 免费播放视频 | 黄色精品 | 天天操天天干天天射 | 你懂的在线观看网站 | 欧美一级特黄aaaaaa在线看首页 | 免费精品一区二区三区在线观看 | 好色成人网 | 免费人成网站线观看合集 | 亚洲第一视频区 | 久操免费在线视频 | 色吧色吧色吧网 | 丁香婷婷激情五月 | 日本亚洲高清乱码中文在线观看 | 一区二区三区高清视频在线观看 | 天堂网在线资源www最新版 | 天堂在线最新版资源www | 国产福利小视频在线观看 | 亚洲影视网| www.色视频| 日本一区二区在线免费观看 | 日本色色图 | 国产三级a三级三级天天 | 欧美18性欧美黑吊 | 免费人成观看在线网 | 天天摸天天干 | 久操视频在线观看免费 | 狠狠色狠狠色综合 | 天天操天天搞 | 天天搞夜夜 | 激情婷婷六月 | 亚洲人成电影综合网站色 | free性日韩| 欧亚激情偷乱人伦小说视频 | 亚洲二区视频 | 五月天婷婷综合 | www.99在线| 久久99热不卡精品免费观看 | 好大好猛好爽好深视频免费 | 额去鲁97在线观看视频 | 欧美猛交xxxx免费看 |