成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于你不知道的 Python import 十件事

開發 前端
當我們使用 from helper import * 時,我們會從 helper.py 導入所有內容,這也意味著一些導入的函數/變量可能會意外地覆蓋現有的同名函數/變量。因此,更好的做法通常是明確說明我們要導入的內容,而不是在文件中導入所有內容。

1) “import X” VS "from X import Y”

我們有 2 個文件:運行的 main.py 和導入的 helper.py。

這里有兩種主要的導入方式:

圖片圖片

以及

圖片圖片

兩種方法都有效,各有利弊:

在 from helper import testfunc 中,我們只需鍵入 testfunc() 就可以使用它,而在 import helper 中,我們需要鍵入 helper.testfunc()

不過,在更大、更復雜的應用程序中, from helper import testfunc

相反, import helper 不會意外覆蓋另一個名稱為 testfunc 的函數/變量,因為它是有命名空間的( helper.testfunc

2) “from X import Y“ VS ”from X import *"

from helper import testfunc 只導入 testfunc

圖片圖片

from helper import *  導入 helper.py

圖片圖片

雖然 from helper import *

當我們使用 from helper import *

因此,更好的做法通常是明確說明我們要導入的內容,而不是在文件中導入所有內容。

3) import 用于動態導入

圖片圖片

這樣我們就可以使用字符串動態導入模塊。

4) sys.path 和導入內容的位置

當我們導入東西時,Python 有一個要搜索的文件夾列表。

我們可以通過打印 sys.path

圖片圖片

當我們導入 pandas 時,Python 會嘗試在第一個文件夾 /Users/me/Documents/test

如果第一個文件夾中存在 pandas,Python 就會直接從這里導入 pandas。否則,Python 將轉到下一個文件夾 /some/other/path

如此反復,直到沒有文件夾可供 Python 搜索。當這種情況發生時,我們會得到一個 ImportError

圖片圖片

5) 可以手動向 sys.path 添加內容

sys.path 是一個普通的字符串列表。Python 只是碰巧從 sys.path

假設我們需要從 /some/weird/path/test.py

而我們正在使用 /our/main/path/main.py

圖片圖片

因此,我們只需在 sys.path 中添加  /some/weird/path ,這樣 Python 就會知道我們希望從 /some/weird/path

將 some/weird/path 添加到 sys.path

6) PEP8 的導入順序

PEP8 (Python Enhancement Proposal 8) 是一份說明 Python 代碼風格最佳實踐的文檔。鏈接:https://peps.python.org/pep-0008/

關于導入,最好這樣排序:

  1. 標準庫導入,例如 os, sys, json, re
  2. 相關的第三方導入,如 pandas、numpy、fastapi
  3. 本地庫特定導入,如 our_custom_modules

記得在每組導入之間添加一個換行符,以提高可讀性

圖片圖片

注意: Python 并不強制這樣做

7) __all__ 和從文件導出

特殊的 __all__ 變量控制著從文件導入的內容。

我們有兩個文件:main.py 和 helper.py,main.py 從 helper.py

helper.py包含許多函數,但它有一個__all__變量。

圖片圖片

在這里,__all__ 變量的作用是,當我們執行 from helper import 時,只有 hello 和 hi 被導出。

圖片圖片

在這里,由于 hello.py 只導出了 hello 和 hi,因此 main.py 只導入了 hello 和 hi.

這意味著 hola 和 nihao

因此,__all__ 變量可以用來限制 Python 模塊中導出的內容,如果我們的模塊很雜亂,包含很多變量,這個變量就特別有用。

8) 在 “from X import” 過程中,不導入以 _ 開頭的變量。

我們有 2 個文件:main.py 和 helper.py,main.py 從 helper.py

圖片圖片

在 helper.py

圖片圖片

而當我們執行 “from helper import *” 時,

9) PYTHONPATH 環境變量

PYTHONPATH是一個環境變量,我們可以選擇是否定義它。如果我們定義了它,PYTHONPATH 會自動添加到 sys.path

在下面的示例中,我們沒有定義PYTHONPATH:

圖片圖片

在下一個示例中,我們將PYTHONPATH 設置為 /some/funny/path

圖片圖片

因此, /some/funny/path  會自動添加到 sys.path

如果我們想從其他路徑導入模塊,但又不想將我們的當前目錄與該位置關聯起來,這就很有用了。

10) 在導入時使用 '__name__'

 '__name__'  是 Python 中的另一個特殊變量。

當我們直接運行一個文件時,__name__默認為字符串值*'__main__'*。

相反,導入文件中的 __name__ 并不是 '__main__' ,而是 Python 文件的名稱。

圖片圖片

圖片圖片

圖片圖片

在這里,我們直接運行 a.py。因此,a.py 中的 '__name__' 默認為 __main__。

b.py 和 c.py 不會直接運行。相反,我們從它們中導入。因此,b.py 中的 '__name__' 只是 b, 而 c.py 中的  '__name__' 只是 c

這就是為什么我們經常在 Python 代碼中看到 if __name__ == '__main__' 這是為了確保只有在我們直接運行這個特定的 Python 文件時,這個代碼塊中的內容才會運行。

責任編輯:武曉燕 來源: 數據STUDIO
相關推薦

2017-05-02 11:36:00

Java

2015-10-10 09:29:32

GitGithub

2015-10-10 13:11:35

GitGithub工具

2023-03-23 15:14:43

2020-08-10 15:30:24

XDR網絡安全網絡威脅

2015-09-08 11:47:00

微軟容器

2015-03-04 14:54:47

DockerIT管理基礎設施

2025-02-10 08:59:54

2010-09-27 09:24:09

云計算

2013-06-18 11:05:40

Mac Pro開發工具蘋果

2023-04-10 16:02:59

2023-04-04 14:20:27

2023-06-30 13:35:12

2022-10-09 16:35:08

Redis開發集群

2009-05-26 09:48:34

2014-11-21 10:25:18

Java

2024-03-25 00:10:00

JSON后端開發

2010-05-19 09:01:00

2011-11-30 13:34:13

2010-08-09 13:13:00

Flex程序員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 新超碰97 | 国产成人自拍一区 | 久久国产成人午夜av影院武则天 | 久久99深爱久久99精品 | 六月成人网 | 91看片网| 精品久久久久久亚洲精品 | 一级特黄视频 | 香蕉视频1024 | 黄色免费在线观看网址 | 国产精品色一区二区三区 | 337p日韩| 日本一区二区三区视频在线 | 欧美一级电影免费观看 | 国产一区二区三区四区 | 日日干日日操 | 欧美精品一区二区蜜桃 | 成人精品鲁一区一区二区 | 欧美日韩国产一区二区 | 日韩精品免费一区二区在线观看 | a级大片免费观看 | 精品三级在线观看 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 夜夜爽99久久国产综合精品女不卡 | 成人网在线 | 91亚洲精品在线观看 | 在线播放中文字幕 | 亚洲综合区 | 天天爽夜夜爽精品视频婷婷 | 国内精品久久久久久 | 91成人在线 | 国产成人精品一区二区三区四区 | 亚洲一区亚洲二区 | 麻豆av在线 | 男人av网 | 9999在线视频 | 四色永久 | 亚洲永久| 国产精品国产三级国产播12软件 | 免费视频一区二区 | 久久精品99国产精品 |