淺談python新手中常見的疑惑及解答
1 lambda函數(shù)
函數(shù)格式是lambda keys:express 匿名函數(shù)lambda是一個(gè)表達(dá)式函數(shù),接受keys參數(shù),返回表達(dá)式的值。所以不用return,也沒有函數(shù)名,經(jīng)常用在需要key參數(shù)的函數(shù)中,比如sorted。
2 元組(),它是以逗號(hào)辨別的,而不是小括號(hào)。比如一個(gè)元素的元組新手經(jīng)常寫成(12),其實(shí)他會(huì)被解釋成單個(gè)元素12.正確的寫法應(yīng)該是(12,),在元素后面加上逗號(hào)。
3 模塊導(dǎo)入。比如
import random
print random.choice(range(10))
和
from random import choice
print choice(range(10))
新手會(huì)有一種誤解,第二種方法只導(dǎo)入了一個(gè)函數(shù),而沒有把整個(gè)模塊導(dǎo)入,這是錯(cuò)誤的。整個(gè)模塊其實(shí)已經(jīng)被導(dǎo)入,只是那個(gè)函數(shù)的引用被保存了起來(lái)。所以from-import這種語(yǔ)法不會(huì)帶來(lái)性能上的差異,也沒有節(jié)省內(nèi)存。
4 當(dāng)你有許多module,比如幾百個(gè),想要使用時(shí)可能會(huì)想一個(gè)一個(gè)導(dǎo)入太麻煩,有沒有簡(jiǎn)便的方法?答案是有的,就是將這些模塊組織成一個(gè)package。其實(shí)就是將模塊都放在一個(gè)目錄里,然后再加一個(gè)__init__.py文件,python會(huì)將其看作為package,使用里面的函數(shù)就可以以dotted-attribute方式來(lái)訪問(wèn)。
5 參數(shù)傳遞可變對(duì)象是傳引用的,不可變對(duì)象是傳值的。那么什么對(duì)象是可變的,什么是不可變的。所有python對(duì)象都有三個(gè)屬性:類型、標(biāo)識(shí)符和值,如果值是可變的就是可變對(duì)象,如果值不可變就是不可變對(duì)象。像數(shù)字、字符串、元組都是不可變對(duì)象,剩下的列表、字典、類、類實(shí)例等都是可變對(duì)象。
6 迭代器的理解,是實(shí)現(xiàn)了迭代器協(xié)議的容器對(duì)象。自己實(shí)現(xiàn)一個(gè)迭代器,類中要有__iter__()方法,該方法返回一個(gè)對(duì)象。這個(gè)對(duì)象要有__next__()方法,在next方法中的適當(dāng)位置返回StopIteration異常。迭代器不經(jīng)常使用,所以不用太擔(dān)心。有替代方法就是生成器。
class MyIterator(object): """docstring for MyIterator""" def __init__(self, num): self.num = num def __iter__(self): return self; def __next__(self): if self.num <= 0: raise StopIteration; self.num -= 1; return self.num; for each in MyIterator(5): print(each); -> 結(jié)果
7 生成器。函數(shù)中只要出現(xiàn)了yield語(yǔ)句就會(huì)將其轉(zhuǎn)變成一個(gè)生成器。在遇見yield語(yǔ)句后會(huì)保存上下文環(huán)境,并退出函數(shù)。
注意:生成器中沒有return語(yǔ)句。
def fun2(num): print("start generator"); while(num>0): yield num; num -=1; a=[each for each in fun2(5)] print(a);->結(jié)果 start generator [5, 4, 3, 2, 1]
學(xué)習(xí)過(guò)程中,難免出錯(cuò)。如果您在閱讀過(guò)程中遇到不太明白,或者有疑問(wèn)。
以上這篇淺談python新手中常見的疑惑及解答就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python pygame實(shí)現(xiàn)中國(guó)象棋單機(jī)版源碼
今天給大家?guī)?lái)的是關(guān)于Python實(shí)戰(zhàn)的相關(guān)知識(shí),文章圍繞著用Python pygame實(shí)現(xiàn)中國(guó)象棋單機(jī)版展開,文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06Python基于面向?qū)ο笞鲆粋€(gè)文件夾整理工具
這篇文章主要給大家介紹了Python基于面向?qū)ο笞鲆粋€(gè)文件夾整理工具,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02python使用matplotlib畫柱狀圖、散點(diǎn)圖
這篇文章主要為大家詳細(xì)介紹了python使用matplotlib畫柱狀圖、散點(diǎn)圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03pytorch模型部署到onnx的詳細(xì)過(guò)程
這篇文章主要介紹了如何簡(jiǎn)單的將pytorch模型部署到onnx,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08python實(shí)現(xiàn)scrapy爬蟲每天定時(shí)抓取數(shù)據(jù)的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)scrapy爬蟲每天定時(shí)抓取數(shù)據(jù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Python pyinotify模塊實(shí)現(xiàn)對(duì)文檔的實(shí)時(shí)監(jiān)控功能方法
今天小編就為大家分享一篇Python pyinotify模塊實(shí)現(xiàn)對(duì)文檔的實(shí)時(shí)監(jiān)控功能方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10淺談keras通過(guò)model.fit_generator訓(xùn)練模型(節(jié)省內(nèi)存)
這篇文章主要介紹了淺談keras通過(guò)model.fit_generator訓(xùn)練模型(節(jié)省內(nèi)存),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06