在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡述python包模塊import和from及all

jf_78858299 ? 來源:梯閱線條小梯子 ? 作者:小梯子 ? 2023-02-21 14:20 ? 次閱讀

python指定導入目錄路徑,稱為包導入。

通過import和from導入包模塊。

通過all指定導入的模塊和導入的模塊屬性。

1.1 python包import和from

用法

import dir1.dir2.mod
from dir1.dir2 import mod
from dir1.dir2.mod import x

描述

NO 內容 描述
1 點號分隔 包導入的路徑以點號分隔,點號對應機器路徑分隔符。
2 目錄關系 包名對應機器目錄,左邊為父目錄,右邊為子目錄。
3 搜索路徑 dir1所在父目錄必須在模塊搜索路徑中。
4 init .py 包導入的路徑(目錄)必須存在 init .py,才能導入成功。 init .py內容可以為空和非空。
5 包初始化 首次導入包時,自動執行 init .py文件內容。
6 模塊初始 import dir1.dir2.mod返回模塊對象,包含 init .py的全部變量。
7 import import dir1.dir2.mod后,每次使用都需要寫全路徑:dir1.dir2.mod.x,如果路徑有變更,每處使用的地方都要修改。
8 from from dir1.dir2 import mod,使用不需寫全路徑:mod.x,如果路徑有變更,只需修改from一處。
9 as 通過as給import包取別名,簡化書寫。

示例

# dir1\\__init__.py
print('在dir1\\__init__.py')
a = 1
# dir1\\dir2\\__init__.py
print('在dir1\\dir2\\__init__.py')
b = 2
# dir1\\dir2\\mod.py
print('在dir1\\dir2\\mod.py')
s = '梯閱線條'
# 在 idle 執行下面示例
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
# 首次導入自動執行__init__.py
>>> import dir1.dir2.mod
在dir1\\__init__.py
在dir1\\dir2\\__init__.py
在dir1\\dir2\\mod.py
>>> dir1.dir2.mod.s
'梯閱線條'
# 再次導入不再執行__init__.py
>>> import dir1.dir2.mod
# 修改py文件
# dir1\\__init__.py
print('修改在dir1\\__init__.py')
a = 1
# dir1\\dir2\\__init__.py
print('修改在dir1\\dir2\\__init__.py')
b = 2
# dir1\\dir2\\mod.py
print('修改在dir1\\dir2\\mod.py')
s = '修改梯閱線條'
# 在 idle 執行下面示例
# 直接import不會執行修改后代碼
>>> import dir1.dir2.mod
>>> dir1.dir2.mod.s
'梯閱線條'
# reload 模塊或包重新執行對應__init__.py最新代碼
>>> reload(dir1.dir2.mod)
修改在dir1\\dir2\\mod.py
>>> dir1.dir2.mod.s
'修改梯閱線條'
'dir1.dir2.mod' from 'E:\\\\documents\\\\F盤\\\\dir1\\\\dir2\\\\mod.py'>
>>> reload(dir1.dir2)
修改在dir1\\dir2\\__init__.py
'dir1.dir2' from 'E:\\\\documents\\\\F盤\\\\dir1\\\\dir2\\\\__init__.py'>
>>> reload(dir1)
修改在dir1\\__init__.py
'dir1' from 'E:\\\\documents\\\\F盤\\\\dir1\\\\__init__.py'>
# 模塊對象 包含__init__.py 全部頂層變量
>>> dir1.a
1
>>> dir1.dir2.b
2
# import 需要寫全路徑,否則找不到模塊對象
>>> dir2.mod.s
Traceback (most recent call last):
 File "", line 1, in 
   dir2.mod.s
NameError: name 'dir2' is not defined
# from 不需寫全路徑,只需寫import后面變量即可
>>> from dir1.dir2 import mod
>>> mod.s
'修改梯閱線條'
# as 給包路徑取別名,通過別名訪問模塊對象屬性
>>> import dir1.dir2.mod as md
>>> md.s
'修改梯閱線條'

1.2 python模塊all列表

用法

# moda.py
__all__ =['v1','myprint',]

描述

python用from module import *導入模塊屬性時:

NO 描述
1 模塊已定義all列表,則只導入all列表內的屬性、方法、類
2 模塊未定義all列表,則導入模塊的全部頂層屬性
3 all寫在import語句下面

示例

# E:\\documents\\F盤\\moda.py
import sys
__all__ =['v1','myprint',]
print('模塊__all__')
v1 = '梯閱線條'
v2 = 'tyxt.work'

def myprint():
   print(v2)
   
def myecho():
   print(v1)
   
# 在 idle 執行下面示例
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
>>> from moda import *
模塊__all__
# 可以訪問 __all__ 列表屬性
>>> v1
'梯閱線條'
# 不可訪問 __all__ 列表外屬性
>>> v2
Traceback (most recent call last):
 File "", line 1, in 
   v2
NameError: name 'v2' is not defined
>>> myprint()
tyxt.work
>>> myecho()
Traceback (most recent call last):
 File "", line 1, in 
   myecho()
NameError: name 'myecho' is not defined

1.3 python包all列表

用法

# __init__.py
__all__ = ['dir1moda',]

描述

python用from dir1 import * 導入包模塊時:

NO 描述
1 init .py已定義all列表,則只導入all列表內的模塊。
2 init .py未定義all列表,則不會自動導入任何模塊,只導入包,可以在 init .py手動導入模塊。
3 all寫在import語句下面

示例

# 目錄結構:
# --dir1
# ----__init__.py
# ----dir1moda.py
# ----dir1modb.py
# E:\\documents\\F盤\\dir1\\dir1moda.py
print('在E:\\documents\\F盤\\dir1\\dir1moda.py')
# E:\\documents\\F盤\\dir1\\dir1modb.py
print('在E:\\documents\\F盤\\dir1\\dir1modb.py')
# E:\\documents\\F盤\\dir1\\__init__.py
import sys
__all__ = ['dir1moda',]
print('修改在dir1\\__init__.py')
a = 1
# 在 idle 執行下面示例
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
>>> from dir1 import *
修改在dir1\\__init__.py
在E:\\documents\\F盤\\dir1\\dir1moda.py
# 在 __all__ 列表內的模塊被自動導入,可訪問
>>> dir1moda.s
'在E:\\\\documents\\\\F盤\\\\dir1\\\\dir1moda.py'
# 非 __all__ 列表內的模塊不自動導入,不可訪問
>>> dir1modb.s
Traceback (most recent call last):
 File "", line 1, in 
   dir1modb.s
NameError: name 'dir1modb' is not defined
# 修改__init__.py文件:E:\\documents\\F盤\\dir1\\__init__.py,刪除__all__
import sys
print('修改在dir1\\__init__.py')
a = 1
# 重啟 idle 執行下面示例
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
>>> from dir1 import *
修改在dir1\\__init__.py
# 未定義__all__ ,不自動導入任何模塊,不可訪問
>>> dir1moda.s
Traceback (most recent call last):
 File "", line 1, in 
   dir1moda.s
NameError: name 'dir1moda' is not defined
>>> dir1modb.s
Traceback (most recent call last):
 File "", line 1, in 
   dir1modb.s
NameError: name 'dir1modb' is not defined
# 修改__init__.py文件:手動導入模塊
import sys
from dir1 import dir1moda
print('修改在dir1\\__init__.py')
a = 1
# 重啟 idle 執行下面示例
>>> import os
>>> path=r'E:\\documents\\F盤'
>>> os.chdir(path)
>>> from dir1 import *
在E:\\documents\\F盤\\dir1\\dir1moda.py
修改在dir1\\__init__.py
# __init__.py 手動導入模塊,可訪問
>>> dir1moda.s
'在E:\\\\documents\\\\F盤\\\\dir1\\\\dir1moda.py'
>>> dir1modb.s
Traceback (most recent call last):
 File "", line 1, in 
   dir1modb.s
NameError: name 'dir1modb' is not defined
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4821

    瀏覽量

    85768
  • import
    +關注

    關注

    0

    文章

    15

    瀏覽量

    2032
收藏 人收藏

    評論

    相關推薦

    什么是python模塊和庫?

    使用 模塊名.變量名 的方式訪問這個變量。>>> import demo導入成功>>> demo.name'Python編程時光'在導入模塊的時候,有一個非常重要
    發表于 03-09 16:48

    python花式導的八種方法

    。$ python3 -m pip install import_from_github_com這個使用了PEP 302中新的引入鉤子,允許你可以從github上引入。這個
    發表于 03-10 16:51

    python 導入的三個冷門知識點

    1. 使用 __all__ 控制可被導入的變量使用 from module import * 默認情況下會導入 module 里的所有變量,若你只想從模塊中導入其中幾個變量,可以在 m
    發表于 03-14 16:33

    python模塊和庫是什么

    有一個名為 demo.py 的文件,文件內容如下 name="Python編程時光"print("導入成功") 直接使用 import 語句就可以導入,導入之后,就可以使用 模塊名.變量名 的方式訪問
    的頭像 發表于 03-09 16:47 ?2440次閱讀

    python花式導的八種方法

    python花式導的八種方法 1. 直接 import 人盡皆知的方法,直接導入即可 import os os.getcwd()'/home/xxx' 與此類似的還有,不再細講
    的頭像 發表于 03-10 16:48 ?2459次閱讀

    詳解python常規與命名空間

    python常規與命名空間 1. 常規Python 3.3 之前或者說 Python
    的頭像 發表于 03-11 15:46 ?3568次閱讀

    python模塊相對導入fromimport介紹1

    文件**init**.py下,python通過import module導入模塊時,先搜索程序運行主目錄。 程序運行主目錄為運行的py文件所在目錄,而不是執行
    的頭像 發表于 02-21 14:15 ?1136次閱讀

    python模塊相對導入fromimport介紹2

    python2.7先搜索當前目錄,再搜索sys.path模塊搜索路徑。即先相對再絕對。 本示例在交互模式執行,非文件模式執行。
    的頭像 發表于 02-21 14:17 ?799次閱讀

    淺析python模塊創建和fromimport使用

    python模塊通過用python程序編寫的.py文件即可創建,通過fromimport語句導入模塊
    的頭像 發表于 02-21 14:44 ?1018次閱讀

    import模塊的導入方法

    import 加載的模塊分為四種類型: 使用python編寫的代碼 .py 文件 已被編譯為共享庫或 DLL 的C或C++擴展 一組模塊
    的頭像 發表于 09-11 17:31 ?1515次閱讀

    rom…import導入代碼介紹

    rom…import導入 基本語法格式如下: from 模塊import 成員1,成員2,… 如果希望導入一個模塊中的所有成員,則可以采
    的頭像 發表于 09-11 17:35 ?1103次閱讀

    Python導入操作和本質

    導入操作和本質 常見方式如下: import a.aa.module_AA : 按模塊路徑導入 在使用時,必須加完整名稱來引用. 比如: a.aa.module_AA.fun_AA() fr
    的頭像 發表于 09-12 17:41 ?1018次閱讀

    Python import Hook 實現遠程導入模塊

    所謂的模塊 導入,是指在一個模塊中使用另一個模塊的代碼的操作,它有利于代碼的復用。 也許你看到這個標題,會說我怎么會發這么基礎的文章? 與此相反。恰恰我覺得這篇文章的內容可以算是 Python
    的頭像 發表于 11-02 11:45 ?829次閱讀
    <b class='flag-5'>Python</b> <b class='flag-5'>import</b> Hook 實現遠程導入<b class='flag-5'>模塊</b>

    python如何import自己的模塊

    Python中,我們可以通過import語句來引入自己的模塊。導入自己的模塊可以提高代碼的可重用性,使代碼更加清晰和易于維護。在本文章中,我們將詳細介紹如何導入自己的
    的頭像 發表于 11-22 14:57 ?3574次閱讀

    如何用import導入一個

    Python中,import語句用于導入代碼所需的模塊模塊Python代碼的集合,而
    的頭像 發表于 11-22 14:59 ?1462次閱讀
    主站蜘蛛池模板: 婷婷了五月色香综合缴情 | 美日毛片 | 美女视频黄.免费网址 | 一区二区三区亚洲视频 | 国产男靠女免费视频网站 | 免费视频观看 | 啪啪网站色大全免费 | 亚洲成人免费观看 | 18满xo影院视频免费体验区 | xxxx日本黄色 | 四虎影院免费观看 | 欧美啪啪小视频 | 高清国产亚洲va精品 | 啪啪网站免费观看 | 性欧美videofree另类超大 | 天堂资源在线观看 | 久久久国产精品免费看 | 欧美一级黄色片在线观看 | 35pao免费视频 | 国产色视频网站 | 亚洲美女激情视频 | 国产乱辈通伦影片在线播放 | 天堂网站 | 欧美日韩亚洲国产 | 国产色婷婷精品综合在线 | 亚洲黄色三级视频 | 五月天婷婷在线观看高清 | 奇米在线 | 农村女人的一级毛片 | 午夜精品网| 午夜欧美精品久久久久久久久 | 国内精品一区二区在线观看 | 亚洲第8页 | 天天天做天天天天爱天天想 | 国产999星空传媒在线观看 | 日韩黄色成人 | 素股中文字幕 | 国产亚洲精品激情都市 | 狠狠干狠狠干狠狠干 | 高清一本之道加勒比在线 | bt天堂在线观看 |