<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在PyCharm中,帶有__init__.py
這個檔案的目錄被認為是Python的包目錄,與普通目錄的圖示有不一樣的顯示。
如下圖所示,data目錄沒有__init__.py
,其圖示是個資料夾圖示;而model下有_init__.py檔案,其圖示是一個包。所以__init__.py
是Python中package的標識
__init__.py
檔案的一個主要作用是將資料夾變為一個Python模組,Python中的每個模組的包中,都有__init__.py
檔案。
python在解釋包的時候會給本模組下的所有檔案建立一個索引放在當前路徑下的__init__.py
檔案中,如果沒有檔案索引,即使import了指定的包,直譯器還是找不到這個模組下的檔案。如果一個資料夾下沒有__init__.py
檔案,不會被當做一個模組。
# 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
檔案中的參照檔案,需要加上包名。
我們在python中匯入一個包時,實際上是匯入了它的__init__.py檔案,這樣我們可以在__init__.py檔案中批次匯入我們所需要的模組,而不再需要一個一個的匯入。
使用__init__.py
中的重要變數__all__,
將模組全部匯入。
# __init__.py __all__ = ['os', 'sys', 're', 'urllib'] # a.py from package import *
這就會將註冊在__init__.py檔案中__all__列表中的模組和包匯入到當前檔案中來。
假設我們的模組包的目錄結構如下:
- mypackage - - subpackage_1 - - - test11.py - - - test12.py - - subpackage_2 - - - test21.py - - - test22.py - - subpackage_3 - - - test31.py - - - test32.py
直接匯入:
如果我們使用最直接的匯入方式,將整個檔案拷貝到工程目錄下,然後直接匯入:
from mypackage.subpackage_1 import test11 from mypackage.subpackage_1 import test12 from mypackage.subpackage_2 import test21 from mypackage.subpackage_2 import test22 from mypackage.subpackage_3 import test31 from mypackage.subpackage_3 import test32
這樣的話,查詢的時候也會麻煩,此時__init__.py就起到了簡化的作用。
init.py匯入:
在mypackage/新增__init__.py程式,有三種寫入方式。
from mypackage.subpackage_1 import test11 from mypackage import * from mypackage.subpackage_1 import *
在較低的版本中(如3.2及以下),沒有__init__.py檔案的目錄不能使用import xx.xx匯入相關模組,但是後面的版本可以。
(1)如果匯入的模組和主程式在同個目錄下,直接import就行了
(2)如果匯入的模組是在主程式所在目錄的子目錄下,可以在子目錄中增加一個空白的__init__.py檔案,該檔案使得python直譯器將子目錄整個也當成一個模組,然後直接通過“import 子目錄.模組”匯入即可。
(3)如果匯入的模組是在主程式所在目錄的父目錄下,則要通過修改path來解決,有兩種方法:
①通過sys.path.append
import sys sys.path.append('父目錄的路徑') # '需要參照模組的地址'
來改變。python直譯器就是通過sys.path去的尋找模組的。sys.path是一個列表 list ,它裡面包含了已經新增到系統的環境變數路徑。
【注意】:這種方法是執行時修改,指令碼執行後就會失效。
②直接修改環境變數:在windows中是 “ set 變數=‘路徑’ ” 例如:set PYTHONPATH=‘C:test…’ 檢視是否設定成功用echo %PYTHONPATH%,而且進到python直譯器中檢視sys.path,會發現已經有了新增加的路徑了。這 種方式是永久的,一次設定以後一直都有效。在linux中是 “export 變數=‘路徑’ “,檢視是” echo $變數 "
到此這篇關於Python中__init__.py檔案的作用的文章就介紹到這了,更多相關Python__init__.py檔案 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45