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