最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中__init__.py文件的作用詳解

 更新時間:2016年09月18日 16:12:26   作者:Data&Truth  
__init__.py 文件的作用是將文件夾變?yōu)橐粋€Python模塊,Python 中的每個模塊的包中,都有__init__.py 文件.這篇文章主要介紹了Python中__init__.py文件的作用詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

__init__.py 文件的作用是將文件夾變?yōu)橐粋€Python模塊,Python 中的每個模塊的包中,都有__init__.py 文件。

通常__init__.py 文件為空,但是我們還可以為它增加其他的功能。我們在導(dǎo)入一個包時,實際上是導(dǎo)入了它的__init__.py文件。這樣我們可以在__init__.py文件中批量導(dǎo)入我們所需要的模塊,而不再需要一個一個的導(dǎo)入。

# package
# __init__.py
import re
import urllib
import sys
import os
# a.py
import package 
print(package.re, package.urllib, package.sys, package.os)

注意這里訪問__init__.py文件中的引用文件,需要加上包名。

__init__.py中還有一個重要的變量,__all__, 它用來將模塊全部導(dǎo)入。

# __init__.py
__all__ = ['os', 'sys', 're', 'urllib']
# a.py
from package import *

這時就會把注冊在__init__.py文件中__all__列表中的模塊和包導(dǎo)入到當(dāng)前文件中來。

可以了解到,__init__.py主要控制包的導(dǎo)入行為。要想清楚理解__init__.py文件的作用,還需要詳細(xì)了解一下import語句引用機(jī)制:

可以被import語句導(dǎo)入的對象是以下類型:

•模塊文件(.py文件)

•C或C++擴(kuò)展(已編譯為共享庫或DLL文件)

•包(包含多個模塊)

•內(nèi)建模塊(使用C編寫并已鏈接到Python解釋器中)

當(dāng)導(dǎo)入模塊時,解釋器按照sys.path列表中的目錄順序來查找導(dǎo)入文件。

import sys
>>> print(sys.path)
# Linux:
['', '/usr/local/lib/python3.4',
'/usr/local/lib/python3.4/plat-sunos5',
'/usr/local/lib/python3.4/lib-tk',
'/usr/local/lib/python3.4/lib-dynload',
'/usr/local/lib/python3.4/site-packages']
# Windows:
['', 'C:\\WINDOWS\\system32\\python34.zip', 'C:\\Documents and Settings\\weizhong', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34\\lib\\plat-win', 'C:\\Python34\\lib\\lib-tk', 'C:\\Python34\\Lib\\site-packages\\pythonwin', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages', 'C:\\Python34\\lib\\site-packages\\win32', 'C:\\Python34\\lib\\site-packages\\win32\\lib', 'C:\\Python34\\lib\\site-packages\\wx-2.6-msw-unicode']

其中l(wèi)ist第一個元素空字符串代表當(dāng)前目錄。

關(guān)于.pyc 文件 與 .pyo 文件

.py文件的匯編,只有在import語句執(zhí)行時進(jìn)行,當(dāng).py文件第一次被導(dǎo)入時,它會被匯編為字節(jié)代碼,并將字節(jié)碼寫入同名的.pyc文件中。后來每次導(dǎo)入操作都會直接執(zhí)行.pyc 文件(當(dāng).py文件的修改時間發(fā)生改變,這樣會生成新的.pyc文件),在解釋器使用-O選項時,將使用同名的.pyo文件,這個文件去掉了斷言(assert)、斷行號以及其他調(diào)試信息,體積更小,運行更快。(使用-OO選項,生成的.pyo文件會忽略文檔信息)

導(dǎo)入模塊

模塊通常為單獨的.py文件,可以用import直接引用,可以作為模塊的文件類型有.py、.pyo、.pyc、.pyd、.so、.dll

在導(dǎo)入模塊時,解釋器做以下工作:

1.已導(dǎo)入模塊的名稱創(chuàng)建新的命名空間,通過該命名空間就可以訪問導(dǎo)入模塊的屬性和方法。

2.在新創(chuàng)建的命名空間中執(zhí)行源代碼文件。

3.創(chuàng)建一個名為源代碼文件的對象,該對象引用模塊的名字空間,這樣就可以通過這個對象訪問模塊中的函數(shù)及變量

import 語句可以在程序的任何位置使用,你可以在程序中多次導(dǎo)入同一個模塊,但模塊中的代碼僅僅在該模塊被首次導(dǎo)入時執(zhí)行。后面的import語句只是簡單的創(chuàng)建一個到模塊名字空間的引用而已。

sys.modules字典中保存著所有被導(dǎo)入模塊的模塊名到模塊對象的映射。

導(dǎo)入包

多個相關(guān)聯(lián)的模塊組成一個包,以便于維護(hù)和使用,同時能有限的避免命名空間的沖突。一般來說,包的結(jié)構(gòu)可以是這樣的:

package
|- subpackage1
|- __init__.py
|- a.py
|- subpackage2
|- __init__.py
|- b.py

有以下幾種導(dǎo)入方式:

import subpackage1.a # 將模塊subpackage.a導(dǎo)入全局命名空間,例如訪問a中屬性時用subpackage1.a.attr
from subpackage1 import a # 將模塊a導(dǎo)入全局命名空間,例如訪問a中屬性時用a.attr_a
from subpackage.a import attr_a # 將模塊a的屬性直接導(dǎo)入到命名空間中,例如訪問a中屬性時直接用attr_a 
使用from語句可以把模塊直接導(dǎo)入當(dāng)前命名空間,from語句并不引用導(dǎo)入對象的命名空間,而是將被導(dǎo)入對象直接引入當(dāng)前命名空間。

以上所述是小編給大家介紹的Python中__init__.py文件的作用詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Windows系統(tǒng)下使用flup搭建Nginx和Python環(huán)境的方法

    Windows系統(tǒng)下使用flup搭建Nginx和Python環(huán)境的方法

    這篇文章主要介紹了Windows系統(tǒng)下使用flup搭建Nginx和Python環(huán)境的方法,文中使用到了flup這個Python的FastCGI工具,需要的朋友可以參考下
    2015-12-12
  • Django框架用戶注銷功能實現(xiàn)方法分析

    Django框架用戶注銷功能實現(xiàn)方法分析

    這篇文章主要介紹了Django框架用戶注銷功能實現(xiàn)方法,結(jié)合實例形式分析了基于Django框架的刪除cookie實現(xiàn)用戶注銷功能的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 使用Python實現(xiàn)微信拍一拍功能的思路代碼

    使用Python實現(xiàn)微信拍一拍功能的思路代碼

    這篇文章主要介紹了使用Python實現(xiàn)微信“拍一拍”的思路代碼,,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • pandas 時間偏移的實現(xiàn)

    pandas 時間偏移的實現(xiàn)

    時間偏移就是在指定時間往前推或者往后推一段時間,即加減一段時間之后的時間,本文使用Python實現(xiàn),感興趣的可以了解一下
    2021-08-08
  • Python方差特征過濾的實例分析

    Python方差特征過濾的實例分析

    在本篇文章里小編給大家整理了一篇關(guān)于Python方差特征過濾的實例分析內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。
    2021-08-08
  • Python中qutip用法示例詳解

    Python中qutip用法示例詳解

    這篇文章主要給大家介紹了關(guān)于Python中qutip用法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Django使用redis緩存服務(wù)器的實現(xiàn)代碼示例

    Django使用redis緩存服務(wù)器的實現(xiàn)代碼示例

    這篇文章主要介紹了Django使用redis緩存服務(wù)器的實現(xiàn)代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python OpenCV機(jī)器學(xué)習(xí)之圖像識別詳解

    Python OpenCV機(jī)器學(xué)習(xí)之圖像識別詳解

    OpenCV中也提供了一些機(jī)器學(xué)習(xí)的方法,例如DNN等。本文將為大家詳細(xì)介紹一下OpenCV中利用機(jī)器學(xué)習(xí)實現(xiàn)的一些圖片識別功能:人臉識別、車牌識別等,感興趣的可以了解一下
    2022-01-01
  • python通過opencv實現(xiàn)圖片裁剪原理解析

    python通過opencv實現(xiàn)圖片裁剪原理解析

    這篇文章主要介紹了python通過opencv實現(xiàn)圖片裁剪原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法

    Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法

    這篇文章主要介紹了Python Selenium XPath根據(jù)文本內(nèi)容查找元素的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論

阿拉善盟| 南安市| 凤冈县| 九台市| 繁昌县| 穆棱市| 瑞昌市| 牡丹江市| 贵南县| 朝阳市| 巴林右旗| 蒙山县| 黑河市| 财经| 定边县| 城步| 墨玉县| 青州市| 西城区| 化州市| 商都县| 竹山县| 哈巴河县| 安平县| 台前县| 息烽县| 遵化市| 保定市| 周口市| 灵石县| 鱼台县| 大化| 绍兴市| 崇左市| 云安县| 瓮安县| 镇平县| 余姚市| 宿迁市| 临城县| 锦屏县|