日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

如何理解Python中包的引入

瀏覽:191日期:2022-07-24 08:28:40

Python的from import *和from import *,它們的功能都是將包引入使用,但是它們是怎么執(zhí)行的以及為什么使用這種語(yǔ)法呢?

從一模塊導(dǎo)入全部功能

from import * means意味著“我希望能訪問(wèn)中我有權(quán)限訪問(wèn)的全部名稱”。例如以下代碼something.py:

# something.pypublic_variable = 42_private_variable = 141def public_function(): print('I’m a public function! yay!')def _private_function(): print('Ain’t nobody accessing me from another module...usually')class PublicClass(object): passclass _WeirdClass(object): pass

在Python解釋器中,我們可以執(zhí)行from something import *,然后看到如下的內(nèi)容:

>>> from something import *>>> public_variable42>>> _private_variable...NameError: name ’_private_variable’ is not defined>>> public_function()'I’m a public function! yay!'>>> _private_function()...NameError: name ’_private_function’ is not defined>>> c = PublicClass()>>> c<something.publicclass object='' at='' ...=''>>>> c = _WeirdClass()...NameError: name ’_WeirdClass’ is not defined

from something import *從something中導(dǎo)入了除了以_開(kāi)頭名稱外的其他所有名稱,按照規(guī)范,_開(kāi)始的名稱是私有的所以未被導(dǎo)入。

上面沒(méi)提到__all__是什么。__all__是一個(gè)字符串列表,指定了當(dāng)from import *被使用時(shí),模塊(或者如后文會(huì)提到的包)中的哪些符號(hào)會(huì)被導(dǎo)出。如果我們不定義__all__(我們?cè)谏厦娴膕omething.py就沒(méi)定義),import *默認(rèn)的導(dǎo)入方式是導(dǎo)入除了下劃線(_)開(kāi)頭的所有名稱。再說(shuō)一次,編程慣例上下劃線表示一個(gè)符號(hào)是私有的,不導(dǎo)入是合理的。讓我們來(lái)看看在something.py中定義我們自己的__all__會(huì)發(fā)生什么。

# something.py__all__ = [’_private_variable’, ’PublicClass’]# The rest is the same as beforepublic_variable = 42_private_variable = 141def public_function(): print('I’m a public function! yay!')def _private_function(): print('Ain’t nobody accessing me from another module...usually')class PublicClass(object): passclass _WeirdClass(object): pass

現(xiàn)在,我們期望from something import *只會(huì)導(dǎo)入_private_variable和PublicClass:

# something.py__all__ = [’_private_variable’, ’PublicClass’]# The rest is the same as beforepublic_variable = 42_private_variable = 141def public_function(): print('I’m a public function! yay!')def _private_function(): print('Ain’t nobody accessing me from another module...usually')class PublicClass(object): passclass _WeirdClass(object): pass

包是怎樣的呢?

當(dāng)從一個(gè)包中導(dǎo)入全部時(shí),__all__的做法和模塊基本一樣,不過(guò)它處理的是包中的模塊(而不是把模塊中的名都導(dǎo)入)。所以當(dāng)我們使用from import *.時(shí)__all__說(shuō)明了所有需要被導(dǎo)入當(dāng)前命名空間的模塊。

不同之處在于,如果你在一個(gè)包的__init__.py里面沒(méi)有聲明__all__,from import *語(yǔ)句不會(huì)導(dǎo)入任何東西(這個(gè)說(shuō)法也不全對(duì),正確的說(shuō)法在此)

但是,這有什么不好?

繼續(xù)讀之前,在你的Python解釋器中,執(zhí)行import this,再讀一遍Python之禪(在你孩子每晚睡前也要讀給他們)。

明確比含糊要好。

from import * 是不明確的。它沒(méi)告訴我們我們正在導(dǎo)入什么或者我們把什么帶入當(dāng)前命名空間了。更好的做法是顯式地導(dǎo)入我們需要的全部名稱。這種方式下,讀者(非??赡苁俏磥?lái)的你自己)就不會(huì)困惑于你代碼中使用的一個(gè)變量/方法/類/其他東西是哪兒來(lái)的,這也告訴了我們下一點(diǎn):

可讀性很重要

即使你需要導(dǎo)入很多東西,一個(gè)一個(gè)顯式地導(dǎo)入也更清楚。使用PEP 328:

from Tkinter import (Tk, Frame, Button, Entry, Canvas, Text, LEFT, DISABLED, NORMAL, RIDGE, END)

你現(xiàn)在就能明確知道你的命名空間里有什么,使用ctrl+f能很快地告訴你它們是哪兒來(lái)的。

同時(shí),你還總是要承擔(dān)模塊/包作者更改list內(nèi)容(加/減東西)的風(fēng)險(xiǎn)。

內(nèi)容擴(kuò)展:

基本注意點(diǎn)

模塊:一般指一個(gè)py文件;包:含有許多py文件的文件夾,含有 或不含有(Python3中允許)__init__文件。 凡是在導(dǎo)入時(shí)帶點(diǎn)的,點(diǎn)的左邊都必須是一個(gè)包 (import a.fun1 其中a為py文件)這種導(dǎo)入形式是錯(cuò)誤的。 2.from a import fun1 a為一個(gè)py文件,fun1為該文件的屬性或方法,這種導(dǎo)入形式是可以的。 一般來(lái)說(shuō) import 后面不能帶點(diǎn),如:(from a import b.c是錯(cuò)誤語(yǔ)法) 導(dǎo)入模塊時(shí),是將模塊的py文件導(dǎo)入進(jìn)去(執(zhí)行);導(dǎo)入包時(shí),只會(huì)執(zhí)行包中的__init__文件中的代碼,故導(dǎo)入包時(shí)一般要導(dǎo)入到最底層,即from dir1.dir2.dir3 import py文件或者類、方法、屬性,只有這樣才能找到。但是你可以通過(guò)先導(dǎo)入一個(gè)包,然后在包的文件中的__init__中寫相關(guān)的import語(yǔ)句(可以絕對(duì),也可以相對(duì)),這樣也可以通過(guò)import 包名 的方式將包中的東西導(dǎo)入進(jìn)去。

以上就是如何理解Python中包的引入的詳細(xì)內(nèi)容,更多關(guān)于Python中包的引入詳解的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品网址| 日韩国产欧美三级| 久久99影视| 国产精品大片| 久久精品国产99国产| 精品资源在线| 97精品国产| 日韩中文视频| 欧美1级日本1级| 欧美精品资源| 国产精品美女久久久| 蜜臀久久99精品久久久久久9 | 免费在线亚洲欧美| 久久av电影| 成人片免费看| 国产91一区| 视频一区欧美日韩| 欧美日韩中文| 国产精品成人a在线观看| 色黄视频在线观看| 蜜臀久久精品| 欧美成人国产| 一本综合精品| 国产欧美自拍| 精品久久电影| 婷婷色综合网| 青草av.久久免费一区| 久久精品国产福利| 国产一区二区中文| 日韩精品乱码av一区二区| 国产精品xxx在线观看| 黑人精品一区| 久久最新视频| 欧美精品97| 久久激情网站| 国产一区二区精品| 国产精品成人国产| 午夜免费一区| 天堂av一区| 成人在线视频免费看| 婷婷精品进入| 久久激五月天综合精品| 日本蜜桃在线观看视频| 影院欧美亚洲| 韩国女主播一区二区三区| 91精品国产成人观看| 一级成人国产| 日韩中文首页| 亚洲精品一二| 国产精品yjizz视频网| 香蕉精品视频在线观看| 欧美视频二区| 午夜久久久久| 国产精品v一区二区三区| 国产精品av久久久久久麻豆网| 日本91福利区| 久久久精品久久久久久96| 日韩和欧美一区二区三区| 日本不良网站在线观看| 日韩欧美高清一区二区三区| 在线一区av| 日韩av在线免费观看不卡| 日韩国产一区| 国产亚洲一区二区三区不卡| 亚洲国产一区二区在线观看| 国产乱码精品一区二区三区亚洲人 | 亚洲啊v在线| 日韩国产在线| 国产日产高清欧美一区二区三区| 久久国产亚洲| 国产极品久久久久久久久波多结野 | 少妇精品久久久一区二区| 日韩高清欧美| 久久精品99国产精品| 亚洲成人精选| 福利一区二区免费视频| 香蕉久久久久久| 久久在线电影| 久久精品国产99国产精品| 亚洲区国产区| 欧美 日韩 国产一区二区在线视频| 国产精品99久久免费| 亚洲一区二区av| 免费国产自久久久久三四区久久| 国产精久久一区二区| 中文字幕成人| 欧美日韩视频| 成人免费网站www网站高清| 国产乱人伦丫前精品视频| 综合激情一区| 亚洲激情中文在线| 久久狠狠婷婷| 蜜臀国产一区| 国产精品成久久久久| 国产区精品区| 日韩高清三区| 巨乳诱惑日韩免费av| 欧美一区三区| 精品视频网站| 国产精品日本一区二区不卡视频 | 91视频久久| 精品国产欧美日韩一区二区三区| 日韩av一区二区在线影视| 亚洲综合图色| 中文字幕视频精品一区二区三区 | 午夜视频一区二区在线观看| 亚洲在线一区| 亚洲神马久久| 日韩午夜一区| 欧美搞黄网站| 久久国产电影| 免费av一区| 婷婷综合社区| 伊人成人网在线看| 亚洲性图久久| 欧美特黄一区| 中文日韩在线| 欧美专区一区二区三区| 亚洲一区二区三区高清不卡| 欧美日韩国产传媒| 欧美69视频| 99在线精品免费视频九九视| 欧美特黄一区| 一区二区精品| 久久精品99久久久| 91麻豆精品激情在线观看最新| 91亚洲精品视频在线观看 | 久久久久久色| 国产欧美日韩亚洲一区二区三区| 日本欧美大码aⅴ在线播放| 日韩制服丝袜av| 亚洲1区在线观看| 国产精品久久久久久久久久久久久久久| 国产欧美一区二区精品久久久| 国产精品美女在线观看直播| 欧美激情视频一区二区三区免费 | 日韩欧美精品一区二区综合视频| 最新国产精品视频| 视频一区日韩精品| 久久福利在线| 国产aⅴ精品一区二区四区| 日韩成人a**站| 日韩一区二区中文| 午夜国产精品视频免费体验区| 另类国产ts人妖高潮视频| 日韩中文字幕av电影| 欧美亚洲综合视频| 精品视频高潮| 99久久婷婷这里只有精品| 六月婷婷一区| 国产日韩一区二区三区在线| 精品国产精品久久一区免费式| 亚洲精品在线影院| 久久国产88| 国产精品99久久免费观看| 韩国三级一区| 免费观看在线综合色| 青青青国产精品| 精品国产欧美日韩一区二区三区| 欧美sss在线视频| 视频一区中文字幕| 国产精品久久777777毛茸茸| 国产传媒在线观看| 羞羞答答国产精品www一本| 777久久精品| 欧美国产偷国产精品三区| 精品国产乱码久久久| 国产精品日韩| 国产精品白丝一区二区三区| 99久久婷婷| 欧美日韩一区二区三区不卡视频| 成人在线视频中文字幕| 亚洲精品一区二区在线看| 日韩国产欧美在线播放| 国产福利电影在线播放| 精品在线播放| 国产九九精品| 欧美a级一区| 国产精品色在线网站| 国产主播一区| 久久国内精品| 激情欧美丁香| 国产欧美日韩影院| 激情欧美一区| 国产免费av国片精品草莓男男| 亚洲午夜91| 嫩呦国产一区二区三区av| 国产一区二区精品| 国产精品www.| 欧美资源在线| 色网在线免费观看| 日韩影片在线观看| 久久婷婷亚洲| 国产精品极品在线观看| 久久高清国产| 亚洲综合电影| 国产精品亚洲欧美日韩一区在线| 自由日本语亚洲人高潮| 久久精品资源| 综合欧美精品|