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

關(guān)于你不知道的 Python import 十件事

開發(fā) 前端
當(dāng)我們使用 from helper import * 時(shí),我們會(huì)從 helper.py 導(dǎo)入所有內(nèi)容,這也意味著一些導(dǎo)入的函數(shù)/變量可能會(huì)意外地覆蓋現(xiàn)有的同名函數(shù)/變量。因此,更好的做法通常是明確說明我們要導(dǎo)入的內(nèi)容,而不是在文件中導(dǎo)入所有內(nèi)容。

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

我們有 2 個(gè)文件:運(yùn)行的 main.py 和導(dǎo)入的 helper.py。

這里有兩種主要的導(dǎo)入方式:

圖片圖片

以及

圖片圖片

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

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

不過,在更大、更復(fù)雜的應(yīng)用程序中, from helper import testfunc

相反, import helper 不會(huì)意外覆蓋另一個(gè)名稱為 testfunc 的函數(shù)/變量,因?yàn)樗怯忻臻g的( helper.testfunc

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

from helper import testfunc 只導(dǎo)入 testfunc

圖片圖片

from helper import *  導(dǎo)入 helper.py

圖片圖片

雖然 from helper import *

當(dāng)我們使用 from helper import *

因此,更好的做法通常是明確說明我們要導(dǎo)入的內(nèi)容,而不是在文件中導(dǎo)入所有內(nèi)容。

3) import 用于動(dòng)態(tài)導(dǎo)入

圖片圖片

這樣我們就可以使用字符串動(dòng)態(tài)導(dǎo)入模塊。

4) sys.path 和導(dǎo)入內(nèi)容的位置

當(dāng)我們導(dǎo)入東西時(shí),Python 有一個(gè)要搜索的文件夾列表。

我們可以通過打印 sys.path

圖片圖片

當(dāng)我們導(dǎo)入 pandas 時(shí),Python 會(huì)嘗試在第一個(gè)文件夾 /Users/me/Documents/test

如果第一個(gè)文件夾中存在 pandas,Python 就會(huì)直接從這里導(dǎo)入 pandas。否則,Python 將轉(zhuǎn)到下一個(gè)文件夾 /some/other/path

如此反復(fù),直到?jīng)]有文件夾可供 Python 搜索。當(dāng)這種情況發(fā)生時(shí),我們會(huì)得到一個(gè) ImportError

圖片圖片

5) 可以手動(dòng)向 sys.path 添加內(nèi)容

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

假設(shè)我們需要從 /some/weird/path/test.py

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

圖片圖片

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

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

6) PEP8 的導(dǎo)入順序

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

關(guān)于導(dǎo)入,最好這樣排序:

  1. 標(biāo)準(zhǔn)庫導(dǎo)入,例如 os, sys, json, re
  2. 相關(guān)的第三方導(dǎo)入,如 pandas、numpy、fastapi
  3. 本地庫特定導(dǎo)入,如 our_custom_modules

記得在每組導(dǎo)入之間添加一個(gè)換行符,以提高可讀性

圖片圖片

注意: Python 并不強(qiáng)制這樣做

7) __all__ 和從文件導(dǎo)出

特殊的 __all__ 變量控制著從文件導(dǎo)入的內(nèi)容。

我們有兩個(gè)文件:main.py 和 helper.py,main.py 從 helper.py

helper.py包含許多函數(shù),但它有一個(gè)__all__變量。

圖片圖片

在這里,__all__ 變量的作用是,當(dāng)我們執(zhí)行 from helper import 時(shí),只有 hello 和 hi 被導(dǎo)出。

圖片圖片

在這里,由于 hello.py 只導(dǎo)出了 hello 和 hi,因此 main.py 只導(dǎo)入了 hello 和 hi.

這意味著 hola 和 nihao

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

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

我們有 2 個(gè)文件:main.py 和 helper.py,main.py 從 helper.py

圖片圖片

在 helper.py

圖片圖片

而當(dāng)我們執(zhí)行 “from helper import *” 時(shí),

9) PYTHONPATH 環(huán)境變量

PYTHONPATH是一個(gè)環(huán)境變量,我們可以選擇是否定義它。如果我們定義了它,PYTHONPATH 會(huì)自動(dòng)添加到 sys.path

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

圖片圖片

在下一個(gè)示例中,我們將PYTHONPATH 設(shè)置為 /some/funny/path

圖片圖片

因此, /some/funny/path  會(huì)自動(dòng)添加到 sys.path

如果我們想從其他路徑導(dǎo)入模塊,但又不想將我們的當(dāng)前目錄與該位置關(guān)聯(lián)起來,這就很有用了。

10) 在導(dǎo)入時(shí)使用 '__name__'

 '__name__'  是 Python 中的另一個(gè)特殊變量。

當(dāng)我們直接運(yùn)行一個(gè)文件時(shí),__name__默認(rèn)為字符串值*'__main__'*。

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

圖片圖片

圖片圖片

圖片圖片

在這里,我們直接運(yùn)行 a.py。因此,a.py 中的 '__name__' 默認(rèn)為 __main__。

b.py 和 c.py 不會(huì)直接運(yùn)行。相反,我們從它們中導(dǎo)入。因此,b.py 中的 '__name__' 只是 b, 而 c.py 中的  '__name__' 只是 c

這就是為什么我們經(jīng)常在 Python 代碼中看到 if __name__ == '__main__' 這是為了確保只有在我們直接運(yùn)行這個(gè)特定的 Python 文件時(shí),這個(gè)代碼塊中的內(nèi)容才會(huì)運(yùn)行。

責(zé)任編輯:武曉燕 來源: 數(shù)據(jù)STUDIO
相關(guān)推薦

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網(wǎng)絡(luò)安全網(wǎng)絡(luò)威脅

2015-09-08 11:47:00

微軟容器

2015-03-04 14:54:47

DockerIT管理基礎(chǔ)設(shè)施

2025-02-10 08:59:54

2010-09-27 09:24:09

云計(jì)算

2013-06-18 11:05:40

Mac Pro開發(fā)工具蘋果

2023-04-04 14:20:27

2023-04-10 16:02:59

2023-06-30 13:35:12

2022-10-09 16:35:08

Redis開發(fā)集群

2009-05-26 09:48:34

2010-05-19 09:01:00

2011-11-30 13:34:13

2014-11-21 10:25:18

Java

2024-03-25 00:10:00

JSON后端開發(fā)

2010-08-09 13:13:00

Flex程序員
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产91久久精品一区二区 | 蜜桃一区二区三区 | 欧美在线高清 | 国产九九九九 | 麻豆天堂| 国产美女在线观看 | 国产精品成人一区二区三区 | 久久久成人免费视频 | 国产精品免费一区二区三区 | 国产精品永久在线观看 | 一区二区在线 | 美女天天操 | 天堂久久一区 | 97视频网站 | 成人激情视频 | 精品免费国产一区二区三区四区 | www.国产一区 | 久久久久久久综合 | 久久久日韩精品一区二区三区 | 欧美精品成人 | 国产片一区二区三区 | 国产免国产免费 | 亚洲一区二区三区国产 | 色综合天天综合网国产成人网 | 九九热在线观看 | 精品日韩在线观看 | 欧美精品一二三 | 欧美人成在线视频 | 婷婷91| 成人三级视频在线观看 | 国产成人免费视频网站高清观看视频 | 热久久免费视频 | 亚洲一区二区在线视频 | 日韩欧美在线免费 | 精品免费国产一区二区三区四区介绍 | 亚洲国产一区在线 | 亚洲视频一区在线播放 | 欧美在线一区二区三区 | 欧美亚洲免费 | 日韩精品久久久 | 在线视频一区二区三区 |