為什麼不建議用 from xxx import *
人生苦短,快學Python!
我們在書籍《 快學Python:自動化辦公輕鬆實戰 》中,第一章11節中詳細講解了Python模塊的安裝與導入。
其中導入模塊有兩種常用方法 : import
語句和 from … import
語句。
1、import語句
import語句會導入指定模塊中所有的方法,當你需要大量使用該模塊中的不同方法時,這種方式很適合你。
import 模塊名
此時,當你使用該模塊中的方法,則需要在方法名前面加上模塊名的前綴。
import math math.pow(2,4)
2、from…import語句
如果你只需要使用某個模塊中的少數方法,推薦使用from…import語句導入相應的模塊。
from 模塊名 import 方法名
此時,當你調用模塊中的方法時,就不需要在方法名前面添加模塊名的前綴。
from math import pow, log pow(2,4) log(32,2)
有時候,當你導入的模塊名太長,可為它指定一個別名。
別名是模塊的另一個名稱,類似於外號,語法格式如下所示。
import pandas as pd
我們導入了pandas模塊,並指定其別名為pd。
如果使用 from 模塊名 import *
,則表示導入該模塊中所有的方法。
from math import * pow(2,4)
注:使用單下劃線“_”開頭的模塊變量或者函數是受保護的,在使用 from xxx import * 語句從模塊中導入時這些變量或者函數不能被導入。
但是,這種用法有兩個坑。第一點,正常我們只需看一下文件開頭的import語句,就能清楚地知道Python代碼中使用了哪些類,乾淨整潔,如果使用 from xxx import *
語句則會丟失該優點。
第二個坑,便是能引發名稱方面的困惑。假如現在Python代碼中要用到兩個模塊 kxpython1
和 kxpython2
,而這兩個模塊都有test()函數,如果正常import語句並不會出現什麼問題。
import kxpython1 import kxpython2 kxpython1.test(123456) kxpython2.test(123456)
但是如果使用 from xxx import *
語句,就芭比Q了。
在交互式環境中輸入如下命令:
from kxpython1 import * from kxpython2 import * test(123456)
你猜這時候, test()
函數用的是哪個模塊???
所以,自然會報錯了。
這就是我們不建議用 from xxx import *
的原因。雖然我們認為,兩個模塊有同名導出本身也許是個小概率事件,但能避免還是儘量避免。省得我們最後寫Python代碼10分鐘,找BUG花了一整天。
人生苦短,快學Python!後續我們會繼續分享更多的Python基礎知識點。
↓ 點擊查看作者新書《快學Python》的最新優惠!
- 技術分享 | orchestrator--運維--配置集羣自動切換&測試
- AIOPS的莫拉維克悖論
- 詳談 MySQL 8.0 原子 DDL 原理
- 為什麼不建議用 from xxx import *
- 最近解決的兩個拖延數年的問題
- Oracle數據庫解決方案集錦
- 新一代雲原生數據庫暢想
- MySQL8.0賬户system_user權限,你瞭解嗎?
- Data Fabric,下一個風口?
- 帶着孩子做開學準備清單
- 十多年前的入職第一天
- 技術分享 | MySQL 編寫腳本時避免煩人的警吿
- GoldenGate案例一則:抽取進程無法捕獲數據
- 技術分享 | MySQL 設置管理員密碼無法生效一例
- PG數據庫的鎖咋弄得這麼複雜呢
- 金融業分佈式數據庫選型及HTAP場景實踐
- 我們的企業為什麼寫不好文檔
- 新數據庫時代,DBA 發展之路該如何選擇
- MySQL:修改系統時鐘會導致數據庫hang住嗎?
- 從程序員的盡頭是業務説起