不同模块下包重名怎么解决_模块
模塊
1、 模塊是一個包含所有你定義的函數和變量的文件,其后綴名是.py。模塊可以被別的程序引入,以使用該模塊中的函數等功能。
2、 當解釋器遇到 import 語句,如果模塊在當前的搜索路徑就會被導入。
搜索路徑是一個解釋器會先進行搜索的所有目錄的列表。
如想要導入模塊 support,需要把命令放在腳本的頂端。
3、 Python 的 from 語句讓你從模塊中導入一個指定的部分到當前命名空間中,語法:
from modname import name1[, name2[, ... nameN]]
4、 把一個模塊的所有內容全都導入到當前的命名空間:
from modname import *
5、模塊除了方法定義,還可以包括可執行的代碼。這些代碼一般用來初始化這個模塊。這些代碼只有在第一次被導入時才會被執行。
每個模塊有各自獨立的符號表,在模塊內部為所有的函數當作全局符號表來使用。
所以,模塊的作者可以放心大膽的在模塊內部使用這些全局變量,而不用擔心把其他用戶的全局變量搞混。
從另一個方面,當你確實知道你在做什么的話,你也可以通過 modname.itemname 這樣的表示法來訪問模塊內的函數。
模塊是可以導入其他模塊的。在一個模塊(或者腳本,或者其他地方)的最前面使用 import 來導入一個模塊,當然這只是一個慣例,而不是強制的。被導入的模塊的名稱將被放入當前操作的模塊的符號表中。
還有一種導入的方法,可以使用 import 直接把模塊內(函數,變量的)名稱導入到當前操作模塊。比如: from fibo import fib, fib2
6、__name__屬性
? 一個模塊被另一個程序第一次引入時,其主程序將運行。如果我們想在模塊被引入時,模塊中的某一程序塊不執行,我們可以用__name__屬性來使該程序塊僅在該模塊自身運行時執行。
? 每個模塊都有一個__name__屬性,當其值是'__main__'時,表明該模塊自身在運行,否則是被引入。
? __name__ 與 __main__ 底下是雙下劃線, _ _ 是這樣去掉中間的那個空格。
7、dir() 函數
? 內置的函數 dir() 可以找到模塊內定義的所有名稱。以一個字符串列表的形式返回。
? 如果沒有給定參數,那么 dir() 函數會羅列出當前定義的所有名稱。
8、包
包是一種管理 Python 模塊命名空間的形式,采用"點模塊名稱"。比如一個模塊的名稱是 A.B, 那么他表示一個包 A中的子模塊 B 。
就好像使用模塊的時候,你不用擔心不同模塊之間的全局變量相互影響一樣,采用點模塊名稱這種形式也不用擔心不同庫之間的模塊重名的情況。
這樣不同的作者都可以提供 NumPy 模塊,或者是 Python 圖形庫。
不妨假設你想設計一套統一處理聲音文件和數據的模塊(或者稱之為一個"包")。
現存很多種不同的音頻文件格式(基本上都是通過后綴名區分的,例如: .wav,:file:.aiff,:file:.au,),所以你需要有一組不斷增加的模塊,用來在不同的格式之間轉換。
并且針對這些音頻數據,還有很多不同的操作(比如混音,添加回聲,增加均衡器功能,創建人造立體聲效果),所以你還需要一組怎么也寫不完的模塊來處理這些操作。
在導入一個包的時候,Python 會根據 sys.path 中的目錄來尋找這個包中包含的子目錄。
目錄只有包含一個叫做 __init__.py 的文件才會被認作是一個包,主要是為了避免一些濫俗的名字(比如叫做 string)不小心的影響搜索路徑中的有效模塊。
最簡單的情況,放一個空的 :file:__init__.py就可以了。當然這個文件中也可以包含一些初始化代碼或者為(將在后面介紹的) __all__變量賦值。
用戶可以每次只導入一個包里面的特定模塊。
總結
以上是生活随笔為你收集整理的不同模块下包重名怎么解决_模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux dd命令制作u盘启动_制做l
- 下一篇: 电脑怎么连蓝牙耳机_蓝牙耳机怎么关机