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

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

如何理解Python中包的引入

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

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

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

from import * means意味著“我希望能訪問中我有權(quá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)入了除了以_開頭名稱外的其他所有名稱,按照規(guī)范,_開始的名稱是私有的所以未被導(dǎo)入。

上面沒提到__all__是什么。__all__是一個字符串列表,指定了當(dāng)from import *被使用時,模塊(或者如后文會提到的包)中的哪些符號會被導(dǎo)出。如果我們不定義__all__(我們在上面的something.py就沒定義),import *默認的導(dǎo)入方式是導(dǎo)入除了下劃線(_)開頭的所有名稱。再說一次,編程慣例上下劃線表示一個符號是私有的,不導(dǎo)入是合理的。讓我們來看看在something.py中定義我們自己的__all__會發(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 *只會導(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)從一個包中導(dǎo)入全部時,__all__的做法和模塊基本一樣,不過它處理的是包中的模塊(而不是把模塊中的名都導(dǎo)入)。所以當(dāng)我們使用from import *.時__all__說明了所有需要被導(dǎo)入當(dāng)前命名空間的模塊。

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

但是,這有什么不好?

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

明確比含糊要好。

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

可讀性很重要

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

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

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

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

內(nèi)容擴展:

基本注意點

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

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

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
天堂资源在线亚洲| 精品国产精品国产偷麻豆| 国产福利一区二区精品秒拍| 一二三区精品| 国产模特精品视频久久久久| 久久精品影视| 羞羞答答国产精品www一本 | 高清一区二区| 国产欧美精品久久| 欧美欧美黄在线二区| 综合激情视频| 国产精品久久久久久模特 | 久久精品不卡| 国产视频一区欧美| 免费成人在线视频观看| 亚洲成人免费| 久色成人在线| 亚洲精品福利| 欧美精品导航| 91精品国产调教在线观看| 欧美~级网站不卡| 亚洲性视频在线| 国产精品magnet| 欧美1级日本1级| 日韩欧美2区| 国产伦精品一区二区三区在线播放| 国产激情精品一区二区三区| 成人在线网站| 91午夜精品| 亚洲一区成人| 在线视频精品| 久久精品国产福利| 亚洲欧美日韩国产一区| 欧美xxxx性| 中文字幕日韩欧美精品高清在线| 久久影院资源站| 美女国产精品| av亚洲一区二区三区| 日本免费一区二区视频| 欧美日中文字幕| 国产伦理久久久久久妇女| 亚洲五月婷婷| 国产一区二区三区四区二区| 免费在线看一区| 久久久国产精品一区二区中文| 亚洲视频国产| 好吊日精品视频 | 亚洲二区在线| 国产粉嫩在线观看| 国产精品视频一区二区三区综合| 亚洲欧美日韩高清在线| 超碰在线99| 电影91久久久| 日韩高清欧美激情| 亚洲欧美久久久| 99久久夜色精品国产亚洲1000部| 欧美中文一区| 综合精品一区| 性欧美长视频| 蜜臀av亚洲一区中文字幕| 国产综合婷婷| 国产精品久久久久av电视剧| 国产日产高清欧美一区二区三区 | 欧美/亚洲一区| 久久久久.com| 麻豆高清免费国产一区| 亚洲精品动态| 亚洲九九精品| 男人的天堂久久精品| 国产一区二区三区自拍| 日本免费一区二区三区四区| 国产极品一区| 国产一区二区亚洲| 久久亚洲精精品中文字幕| 日韩高清二区| 日韩超碰人人爽人人做人人添| 免费在线欧美视频| 蜜臀a∨国产成人精品| 亚洲欧美久久精品| 日本不卡视频一二三区| 另类激情亚洲| 亚洲人成高清| 青草久久视频| 精品久久精品| 色婷婷精品视频| 午夜精品网站| 国产亚洲一区在线| 亚洲日本三级| 国产欧美88| 99久久激情| 亚洲精品三级| 日韩av专区| 黄色国产精品| 国产欧美二区| 国产一区亚洲| 蜜桃视频第一区免费观看| 午夜视频一区二区在线观看| 久久中文字幕一区二区| 三上悠亚国产精品一区二区三区| 亚洲精品小说| 国产精品免费精品自在线观看| 国产福利一区二区精品秒拍 | 日韩精品福利一区二区三区| 国产欧美在线| 亚洲黄页一区| 麻豆久久一区| 日韩中文字幕不卡| 国产精品一区高清| 今天的高清视频免费播放成人| 国产日韩欧美在线播放不卡| 欧美精品国产| 日韩在线卡一卡二| 国产99精品| 超碰在线99| 国产精品免费99久久久| 久久免费高清| 精品国内亚洲2022精品成人| 亚洲一区二区av| 精品成人免费一区二区在线播放| 日韩激情视频网站| 亚洲成人免费| 欧美成人精品三级网站| 中文无码日韩欧| 亚洲91视频| 国产一区二区三区黄网站| 亚洲免费福利一区| 合欧美一区二区三区| 欧美日韩在线观看首页| 精品久久视频| 欧美经典一区| 国产精品.xx视频.xxtv| 婷婷亚洲成人| 免费一区二区视频| 一级欧洲+日本+国产| 欧美+日本+国产+在线a∨观看| 蜜桃精品在线| 五月综合激情| 久久亚洲专区| 亚洲大片在线| 亚洲高清二区| 亚洲中午字幕| 亚洲毛片在线免费| 欧美日韩1区2区3区| 国产精品一区二区99| 麻豆成人av在线| 欧美男人天堂| 99视频一区| 欧美日韩一区二区三区不卡视频 | 合欧美一区二区三区| 亚洲综合在线电影| 激情欧美一区二区三区| 亚洲一区观看| 中文字幕av一区二区三区人| 日韩美女精品| 国产精品久久| 精品国产精品久久一区免费式| 国产精品欧美一区二区三区不卡| 亚洲精品无吗| 蜜桃久久久久| 精品亚洲a∨| 青青久久av| 一区二区三区四区精品视频| 日本三级亚洲精品| 久久久亚洲欧洲日产| 九九久久婷婷| 国产精品毛片aⅴ一区二区三区| 91亚洲人成网污www| 国产精品日韩| 国产精品日韩精品在线播放| 日韩不卡免费高清视频| 日韩在线观看中文字幕| 岛国av在线网站| 中文字幕一区二区av| 超碰超碰人人人人精品| 欧美日韩1区2区3区| 美女精品在线| 欧美日韩一二| 亚洲啊v在线| 国产伦理久久久久久妇女| 久久亚洲图片| 亚洲深夜影院| 欧美91视频| 亚洲风情在线资源| 欧美自拍一区| japanese国产精品| 黄色网一区二区| 视频精品一区二区| 亚洲精品在线观看91| 91成人在线网站| 亚洲性图久久| 久久麻豆视频| 亚洲综合福利| 免费视频一区三区| 久久久亚洲欧洲日产| 在线观看一区| 亚洲欧美高清| 欧美~级网站不卡| 日本视频一区二区| 亚洲一区国产| 女同性一区二区三区人了人一|