Python開發(fā)中的兩個(gè)小常識(shí)
parameters 與 arguments 有什么區(qū)別?
如果大家看一些英文文檔,可能會(huì)看到兩個(gè)詞parameters(有時(shí)候簡寫為params)和arguments(有時(shí)候簡寫為args)。他們的中文意思都是參數(shù)。那么他們有什么區(qū)別呢?
實(shí)際上,parameters是我們在定義函數(shù)的時(shí)候,寫在括號(hào)里面的參數(shù)名,而arguments是我們在調(diào)用函數(shù)的時(shí)候,傳進(jìn)去的具體值。
例如:
- def test(name, age=0):
- print(name, age)
- test('kingname', age=1)
其中name和age叫做parameters,而kingname和1叫做arguments。
使用 import導(dǎo)入模塊的優(yōu)秀實(shí)踐
在任何情況下都禁止使用from xxx import *這種寫法。
在絕大多數(shù)情況下,把import語句寫在.py文件的最上面,并且按照下面的順序:
- Python 自帶的標(biāo)準(zhǔn)庫優(yōu)先導(dǎo)入,例如time/os/re等等
- 已安裝的第三方庫
- 自己寫到項(xiàng)目中的本地模塊
在必要的時(shí)候,為了避免循環(huán)導(dǎo)入,可以把部分import語句寫在函數(shù)里面。
有一個(gè)文件 a.py,里面開頭的語句是import b。又有一個(gè)文件 b.py,里面開頭的語句是import a。這樣寫是沒有問題的。如下圖所示:
但是,如果在a.py里面寫為from b import walk,那么就會(huì)出現(xiàn)循環(huán)引用,導(dǎo)致報(bào)錯(cuò)。如下圖所示:
這是由于,在a.py執(zhí)行from b import walk的時(shí)候,會(huì)進(jìn)入b.py文件。此時(shí)b.py文件會(huì)執(zhí)行import a,但是由于a.py文件還沒有執(zhí)行完成,就導(dǎo)致b.py沒有執(zhí)行完成,此時(shí)walk()函數(shù)還沒有被定義,所以就無法導(dǎo)入。
對(duì)于這種情況,如果確實(shí)代碼里面需要這樣引用,那么可以把from b import walk寫到say()函數(shù)里面,這樣就能正常導(dǎo)入了,如下圖所示:
當(dāng)導(dǎo)入某個(gè)模塊特別耗時(shí)間,但它又只在某個(gè)特定的函數(shù)里面執(zhí)行時(shí),也可以把import語句寫在這個(gè)函數(shù)里面。