一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python模塊如何查看

python模塊如何查看

2020-06-17 10:54silencement Python

在本篇文章中小編給大家整理的是關于python的模塊位置的相關知識點,需要的朋友們可以參考下。

對于編譯型的語言,比如C#中的一個.cs文件,Java中的一個.java或者編譯后的.class文件可以認為是一個模塊(但常常不表述為模塊);對于解釋型的語言會更加直觀些,比如PHP的.php文件,在Python中就是.py文件可以認為是一個模塊。在“模塊”之上有“包”,主要是為了方便組織和管理模塊。比如C#中編譯后的.dll文件(但常常不表述為包Package,而是庫Library),Java將.class打包后的.jar文件,PHP的.phar文件(模仿Java包),在Python中一個特殊定義的文件夾是一個包,可以打包為egg文件。但對于解釋型語言“包”并沒有編譯成低級語言而后打包的意思,只是更加方便模塊化和管理模塊間的依賴。每種編程語言對于模塊和包管理都有一定的約定,不了解這些約定,那會給學習這種語言的帶來障礙。下面我想來梳理一下Python的這些約定。

一、Python查找模塊的路徑

運行Python應用或引用Python模塊,Python解釋器要有一個查找的過程。可以通過設置一個環境變量PYTHONPATH為Python增加一個搜索路徑,以方便查找到相關Python模塊(不同的操作系統環境變量的設置稍有不同,默認以下都是WIndows環境),這與眾多應用程序需要設置一個系統環境變量的道理是一樣的。在命令行中可以通過以下命令設置:

?
1
C:\Users\Administrator>set PYTHONPATH=E:/Project/Python/ModuleAndPackage/

進入Python環境后可以,通過Python的sys.path屬性獲得當前搜索路徑的配置,可以看到之前我們設置的路徑已經在當前搜索路徑中了。

?
1
2
3
4
5
6
7
8
9
C:\Users\Administrator>python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'E:\\Project\\Python\\ModuleAndPackage', 'C:\\Windows\\system32\\python27.zip','C:\\Python\\DLLs','C:\\Python\\
lib', 'C:\\Python\\lib\\plat-win', 'C:\\Python\\lib\\lib-tk', 'C:\\Python', 'C:\\Python\\lib\\site-packages']
 
>>>

也可以通過sys模塊的append方法在Python環境中增加搜索路徑。

?
1
2
3
4
5
6
>>> sys.path.append("E:\\Project\\Python\\ModuleAndPackage2")
>>> sys.path
['', 'E:\\Project\\Python\\ModuleAndPackage', 'C:\\Windows\\system32\\python27.zip','C:\\Python\\DLLs','C:\\Python\\
lib', 'C:\\Python\\lib\\plat-win', 'C:\\Python\\lib\\lib-tk', 'C:\\Python', 'C:\\Python\\lib\\site-packages','E:\\
Project\\Python\\ModuleAndPackage2']
>>>

二、Python中的模塊和包

前面已經提到每個.py文件都是可以認為是一個Python模塊,.py文件中可以包含類、方法、變量和常量(Python還沒有嚴格意義上的常量,只是約定大寫的變量作為常量),文件內也可以直接寫所有的邏輯語句并在加載時從上之下直接執行,這與其他解釋型語言是類似的。例如我們選擇在文件夾ModuleAndPackage中創建一個文本文件person.py文件即創建了一個簡單的Python模塊,其內容如下:

?
1
2
3
4
5
6
# -*- coding: utf-8 -*-
ID = 1
name = "This person"
print name
def say(something):
  print name,'says', something

那么接下來我們就可以在Python環境中執行person.py。我們可以直接像執行一個批處理文件那樣執行person.py,在cmd命令行輸入:

?
1
Python E:/Project/Python/ModuleAndPackage/person.py

本質上任何一個Python應用的入口模塊都是這樣被執行的(像C#和Java中的main函數),但是引用一個模塊,就要建立運行它的上下文環境。我們先設置一個環境變量PYTHONPATH,以便Python解釋器找到person.py模塊,然后import person模塊,即可訪問其中的方法或變量。

?
1
2
3
4
5
6
7
8
9
10
11
C:\Users\Administrator>python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (
Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import person
This person
>>> person.say("hello")
This person says hello
>>> print person.name
This person
>>>

Python需要去某些固定的路徑下去查找Python模塊,上面我們設置在ModuleAndPackage中查找。但是這些路徑下也是有目錄層次的,Python是如何查找子目錄中的模塊呢?特別是引用第三方包時,我們也需要知道一定的層次關系。實際上,Python通過目錄和文件構建包結構,并且包是層層嵌套的,和目錄層層嵌套是一樣的,這樣就構成了包內的訪問路徑(或者命名空間,也可以說Python應用的命名空間與其目錄和文件結構是對應了,似乎缺少了一些靈活,但也更簡單)。例如我們在ModuleAndPackage文件夾下,創建一個文件夾animal,里面創建一個文本文件pet.py,其內容如下:

?
1
2
3
4
5
6
# -*- coding: utf-8 -*-
ID = 2
name = "This pet"
print name
def run(somewhere):
  print name,'runs', somewhere

那么如何引用pet.py這個模塊呢?按照Python的約定,需要在animal文件夾中創建名為__init__.py的空文本文件,以標識animal文件夾是一個包。倘若animal文件夾內還有文件夾作為包,也必須包含__init__.py文件。這樣就層層標識了訪問的路徑。

?
1
2
3
4
5
6
7
>>> import animal.pet
This pet
>>> print animal.pet.name
This pet
>>> animal.pet.run("everywhere")
This pet runs everywhere
>>>

或者使用from關鍵字直接導入模塊內的屬性或方法:

?
1
2
3
4
5
6
>>> from animal.pet import name,run
>>> print name
This pet
>>> run("everywhere")
This pet runs everywhere
>>>

知識點擴展:

使用模塊有什么好處?

當一個模塊編寫完畢,就可以被其他地方引用。我們在編寫程序的時候,也經常引用其他模塊,包括Python內置的模塊和來自第三方的模塊。

模塊還可以避免函數名和變量名沖突。相同名字的函數和變量完全可以分別存在不同的模塊中。但是也要注意,盡量不要與內置函數名字沖突。

如果不同的人編寫的模塊名相同怎么辦?為了避免模塊名沖突,Python又引入了按目錄來組織模塊的方法,稱為包(Package)。

到此這篇關于python模塊如何查看的文章就介紹到這了,更多相關python的模塊在哪內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.py.cn/faq/python/11954.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 肉搏潘金莲三级18春 | 亚洲丰满模特裸做爰 | 精品国产乱码久久久久久免费流畅 | 久久免费看少妇高潮A片特爽 | 亚洲高清网站 | 91亚洲一区二区在线观看不卡 | 黄www片| 国产女主播在线播放一区二区 | 美女脱一光二净的视频 | 欧美在线观看一区二区三 | 青草悠悠视频在线观看 | 日本护士xxxx爽爽爽 | 成人国产在线观看 | 小浪妇奶真大水多 | 久久中文字幕无线观看 | 亚洲网站在线播放 | 香蕉国产人午夜视频在线 | 任我鲁精品视频精品 | 91短视频在线播放 | 第一国内永久免费福利视频 | 射逼视频 | 久久精品无码一区二区日韩av | 国产成人www免费人成看片 | 亚洲大片免费看 | aⅴ免费视频 | 日本xxxxxxxxx高清hd | 9966国产精品视频 | 免费看国产精品麻豆 | 亚洲国产精品久久网午夜 | 国产亚洲99影院 | 色综合图片 | 五月天色小说 | 波多野结衣52部合集在线观看 | 精品国产91久久久久 | 毛片在线免费视频 | 色噜噜亚洲男人的天堂www | 娇妻被又大又粗又长又硬好爽 | 亚洲福利一区二区精品秒拍 | 欧美三级免费观看 | 欧美精品一区二区三区免费 | 91中文在线 |