日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python 關(guān)于模塊和加載模塊的實(shí)現(xiàn)

瀏覽:144日期:2022-06-25 17:08:04
一.導(dǎo)入模塊

模塊(Modules)

模塊就是Python程序,任何Python程序都可以作為模塊

代碼的可重用性,只要編程過程中需要用到該模塊中的某個(gè)功能(由變量、函數(shù)、類實(shí)現(xiàn)),直接在程序中導(dǎo)入該模塊即可使用該功能

封裝特性的結(jié)構(gòu):

諸多容器,列表、元組、字符串、字典等都是對(duì)數(shù)據(jù)的封裝函數(shù)是對(duì) Python 代碼的封裝類是對(duì)方法和屬性的封裝,是對(duì)函數(shù)和數(shù)據(jù)的封裝

模塊,可以理解是對(duì)代碼更高級(jí)的封裝,把能夠?qū)崿F(xiàn)某一特定功能的代碼編寫在同一個(gè).py 文件中,并將其作為一個(gè)獨(dú)立的模塊,還能有效避免函數(shù)名和變量名發(fā)生沖突

當(dāng)程序重復(fù)導(dǎo)入同一個(gè)模塊時(shí),Python 只會(huì)導(dǎo)入一次

import

import 模塊名1 [as 別名1], 模塊名2 [as 別名2],…

會(huì)導(dǎo)入指定模塊中的所有成員(包括變量、函數(shù)、類等),需要使用模塊中的成員時(shí),需用該模塊名(別名)作為前綴,否則解釋器會(huì)報(bào)錯(cuò)

[] 部分,可以使用,也可以省略

sys模塊下的argv變量用于獲取運(yùn)行程序的命令行參數(shù),argv[0]用于獲取當(dāng)前 程序的存儲(chǔ)路徑

import sys #導(dǎo)入sys整個(gè)模塊print(sys.argv[0]) # 用sys模塊內(nèi)的成員時(shí),必須添加模塊名作為前綴C:/Users/Administrator/Desktop/2021-1-14/模塊.py

導(dǎo)入整個(gè)模塊時(shí),可以為模塊指定別名

import sys as s # 導(dǎo)入sys整個(gè)模塊,指定別名為sprint(s.argv[0]) # 使用sys模塊別名s作為前綴來訪問模塊中的成員C:/Users/Administrator/Desktop/2021-1-14/模塊.py

可以一次導(dǎo)入多個(gè)模塊,多個(gè)模塊之間用逗號(hào)隔開

import sys,os # 導(dǎo)入sys、os兩個(gè)模塊print(sys.argv[0]) # 使用模塊名作為前綴來訪問模塊中的成員print(os.sep) # os模塊的sep變量代表平臺(tái)上的路徑分隔符C:/Users/Administrator/Desktop/2021-1-14/模塊.py

導(dǎo)入多個(gè)模塊時(shí),也可以為模塊指定別名

import sys as s,os as o # 導(dǎo)入模塊,并分別為模塊指定別名print(s.argv[0]) # 使用模塊別名作為前綴來訪問模塊中的成員print(o.sep)C:/Users/Administrator/Desktop/2021-1-14/模塊.pyfrom…import

from 模塊名 import 成員名1 [as 別名1],成員名2 [as 別名2],…

只會(huì)導(dǎo)入模塊中指定的成員,而不是全部成員,當(dāng)程序中使用該成員時(shí),無需加任何前綴,直接使用成員名(或別名)

[] 部分,可以使用,也可以省略

用from...import來導(dǎo)入指定成員

from sys import argv # 導(dǎo)入sys模塊的argv成員print(argv[0]) # 直接使用成員名訪問C:/Users/Administrator/Desktop/2021-1-14/模塊.py

導(dǎo)入sys模塊中的 argv 成員,可在程序中直接使用 argv 成員,無須使用任何前綴

導(dǎo)入模塊成員時(shí),為成員指定別名

from sys import argv as v # 導(dǎo)入sys模塊的argv成員,為其指定別名vprint(v[0]) # 直接使用成員的別名訪問C:/Users/Administrator/Desktop/2021-1-14/模塊.py

form...import 導(dǎo)入模塊成員時(shí),可一次導(dǎo)入多個(gè)成員

from sys import argv, winver # 導(dǎo)入sys模塊的argv,winver成員print(argv[0]) # 直接使用成員名訪問print(winver)C:/Users/Administrator/Desktop/2021-1-14/模塊.py3.4

sys模塊的winver成員記錄了該 Python 的版本號(hào)

一次導(dǎo)入多個(gè)模塊成員時(shí),可使用 as 關(guān)鍵字為成員指定別名

from sys import argv as v, winver as wv # 導(dǎo)入sys模塊的成員,并為其指定別名print(v[0]) # 直接使用成員的別名訪問print(wv)C:/Users/Administrator/Desktop/2021-1-14/模塊.py3.4

不推薦使用 from 模塊 import * 導(dǎo)入模塊所有成員

導(dǎo)入指定模塊內(nèi)的所有成員存在潛在的風(fēng)險(xiǎn),可能會(huì)出現(xiàn)同名成員

可通過別名來區(qū)分兩個(gè)模塊中的同名成員

__import __()

模塊是代碼文件,要求其文件名要符合操作系統(tǒng)的命名規(guī)則,如果模塊名中出現(xiàn)空格或數(shù)字開頭,無法使用 import 引入

如果模塊中包含空格或以數(shù)字開頭,需要使用__import__() 內(nèi)置函數(shù)引入模塊

__import__('demo text')__import__('1demo')

使用import()函數(shù)要以字符串的方式將模塊名引入,否則會(huì)報(bào)SyntaxError錯(cuò)誤

二.自定義模塊

定義簡(jiǎn)單的模塊(編寫在 demo.py 文件中)

name = 'youchanwill'add = 'you.com'print(name,add)def say(): print('自定義模塊')class test: def __init__(self,name,add): self.name = name self.add = add def say(self): print(self.name,self.add)

為了檢驗(yàn)?zāi)0逯写a的正確性,需要為其設(shè)計(jì)一段測(cè)試代碼

say()test1 = test('you','you.net')test1.say()

在同一文件夾下新建一個(gè)test.py文件,使用 import 語句導(dǎo)入 demo.py

import demo #用import 語句導(dǎo)入時(shí),只需要使用該模板文件的名稱youchanwill you.com自定義模塊 #測(cè)試代碼也被執(zhí)行you you.net

其它程序以引入的方式執(zhí)行模板文件,測(cè)試代碼不應(yīng)該被執(zhí)行,可用__name__ 變量做修改

當(dāng)直接運(yùn)行一個(gè)模塊時(shí),__name__變量的值為__main__,而模塊被導(dǎo)入其他程序中并運(yùn)行該程序時(shí),處于模塊中的__name__變量的值就變成了模塊名

可在調(diào)用測(cè)試函數(shù)時(shí)增加判斷,當(dāng) __name__ ==’__main__’ 時(shí)才調(diào)用測(cè)試函數(shù)

修改 demo.py 模板文件中的測(cè)試代碼:

if __name__ == ’__main__’: say() test1 = test('you','you.net') test1.say()

修改后運(yùn)行 test.py 文件時(shí)

import demoyouchanwill you.com

執(zhí)行的是模板文件中的輸出語句,測(cè)試代碼并未執(zhí)行

說明文檔

自定義模塊添加說明文檔,和函數(shù)或類的添加方法相同,在模塊開頭的位置定義一個(gè)字符串

可以通過模板的 __doc__ 屬性,來訪問模板的說明文檔

import demoprint(demo.__doc__)youchanwill you.com

這是說明文檔

三.加載模塊環(huán)境變量

根據(jù)PYTHONPATH環(huán)境變量的值來確定到哪里去加載模塊

PYTHONPATH環(huán)境變量的值是多個(gè)路徑的集合,會(huì)依次搜索PYTHONPATH 環(huán)境變量所指定的多個(gè)路徑,從中找到程序想要加載的模塊

在 Windows 平臺(tái)上設(shè)置環(huán)境變量

右擊桌面上的“計(jì)算機(jī)”圖標(biāo),單擊“屬性”菜單項(xiàng),系統(tǒng)顯示“控制面板所有控制面板項(xiàng)系統(tǒng)”窗口,單擊該窗口左邊欄中的“高級(jí)系統(tǒng)設(shè)置”鏈接,出現(xiàn)“系統(tǒng)屬性”對(duì)話框

Python 關(guān)于模塊和加載模塊的實(shí)現(xiàn)

單擊“高級(jí)” Tab 頁中的“環(huán)境變量”,對(duì)于當(dāng)前用戶而言,設(shè)置用戶變量和系統(tǒng)變量的效果大致相同,系統(tǒng)變量的路徑排在用戶變量的路徑之前

Python 關(guān)于模塊和加載模塊的實(shí)現(xiàn)

在“變量名”內(nèi)輸入 PYTHONPATH,表明將要建立 的環(huán)境變量;在“變量值”內(nèi)輸入 .;d:python_ module,就是該環(huán)境變量的值,該值包含兩條路徑

第一條路徑為一個(gè)點(diǎn)(.),代表當(dāng)前路徑,表明當(dāng)運(yùn)行 Python 程序時(shí),總能從當(dāng)前路徑加載模塊

第二條路徑為 d:python_ module,表明當(dāng)運(yùn)行 Python 程序時(shí),總能從 d:python_ module 加載模塊

成功設(shè)置了環(huán)境變量后,只要把定義的模塊放在與當(dāng)前運(yùn)行程序相同的路徑(或d:python_ module 路徑),該模塊就能被成功加載

在 Linux 上設(shè)置環(huán)境變量

啟動(dòng) Linux 的命令行界面,在 home 路徑下輸入:

ls - a

Linux 平臺(tái)的環(huán)境變量通過 .bash_profile 文件設(shè)置,在該文件中添加 PYTHONPATH 環(huán)境變量

PYTHONPATH=.:/home/you/python_module #you是系統(tǒng)的登錄名

Linux 多個(gè)路徑之間以冒號(hào)(:)作為分隔符

完成變量值的設(shè)置后,在 .bash_profile 文件的最后添加導(dǎo)出 PYTHONPATH 變量的語句

export PYTHONPATH

運(yùn)行該文件,使在文件中設(shè)置的 PYTHONPATH 變量值生效

可選擇重新登錄Linux 平臺(tái),或輸入source .bash_profile

成功設(shè)置了環(huán)境變量后,只要把定義的模塊放在與當(dāng)前運(yùn)行程序相同的路徑(或/home/yeeku/python_module 路徑),該模塊就能被成功加載

默認(rèn)的模塊加載路徑

安裝通用性模塊,這種模塊應(yīng)該直接安裝在 Python 內(nèi)部,可借助Python默認(rèn)的模塊加載路徑

通常情況下,應(yīng)將Python的擴(kuò)展模塊添加在 libsite-packages 路徑下,專門用于存放擴(kuò)展模塊和包

將之前的demo.py文件復(fù)制在 libsite-packages 路徑下

’’’這是說明文檔’’’name = 'youchanwill'add = 'you.com'print(name,add)def say(): print('自定義模塊')class test: def __init__(self,name,add): self.name = name self.add = add def say(self): print(self.name,self.add)if __name__ == ’__main__’: say() test1 = test('you','you.net') test1.say()

可直接在Python交互式解釋器中測(cè)試該模塊

>>> import demoyouchanwill you.com>>> print(demo.__doc__)

這是說明文檔

>>> 第一行代碼用于導(dǎo)入demo模塊;第二行代碼用于查看demo模塊的文檔,輸出該模塊開始定義的文檔內(nèi)容

導(dǎo)入模塊的本質(zhì)

import demo 導(dǎo)入模塊的本質(zhì)是將 demo.py 中的全部代碼加載到內(nèi)存并執(zhí)行將整個(gè)模塊內(nèi)容賦值給與模塊同名的變量,該變量的類型是 module,在該模塊中定義的所有程序單元都相當(dāng)于該 module 對(duì)象的成員

from demo import name 導(dǎo)入模塊中成員的本質(zhì)是將 demo.py 中的全部代碼加載到內(nèi)存并執(zhí)行只導(dǎo)入指定變量、函數(shù)等成員單元,不會(huì)將整個(gè)模塊導(dǎo)入

在導(dǎo)入模塊后,在模塊文件所在目錄下看到一個(gè)名為“__pycache__”的文件夾Python 為每個(gè)模塊都生成一個(gè) *.cpython-36.pyc 文件,該文件是為模塊編譯生成的字節(jié)碼,用于提升該模塊的運(yùn)行效率

四.__all__變量

向文件導(dǎo)入某個(gè)模塊時(shí),導(dǎo)入的是該模塊中那些名稱不以下劃線(單下劃線、雙下劃線)開頭的變量、函數(shù)和類

如果不想模塊文件中的某個(gè)成員被引入到其它文件中使用,可以在其名稱前添加下劃線

新建demo.py文件

def test1(): print('you')def test2(): print('chan')def test3(): print('will')

在新建的test.py文件中導(dǎo)入

from demo import *test1()test2()test3()youchanwill

如果 demo.py 模塊中的 test1() 函數(shù)不想讓其它文件引入,只需將其名稱改為 _test1() 或者 __test1()

def _test1(): print('you')NameError: name ’test1’ is not defined

__all__ 變量,該變量的值是一個(gè)列表,存儲(chǔ)的是當(dāng)前模塊中一些成員(變量、函數(shù)或者類)的名稱

通過在模塊文件中設(shè)置 __all__ 變量,當(dāng)其它文件以“from 模塊名 import *”的形式導(dǎo)入該模塊時(shí),該文件中只能使用 __all__ 列表中指定的成員

只有以“from 模塊名 import *”形式導(dǎo)入的模塊,當(dāng)該模塊設(shè)有 __all__ 變量時(shí),只能導(dǎo)入該變量指定的成員,未指定的成員無法導(dǎo)入

def test1(): print('you')def test2(): print('chan')def test3(): print('will')__all__ = ['test1','test2']from demo import *test1()test2()test3()youchanNameError: name ’test3’ is not defined

__all__ 變量僅限于在其它文件中以“from 模塊名 import *”的方式引入

import 模塊名 的形式導(dǎo)入模塊,可以通過模塊名前綴(別名)來調(diào)用模塊內(nèi)的所有成員(除了以下劃線開頭命名的成員),__all__變量的設(shè)置無效

from 模塊名 import 成員 導(dǎo)入指定成員,__all__變量的設(shè)置無用

到此這篇關(guān)于Python 關(guān)于模塊和加載模塊的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python 模塊和加載模塊內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲二区精品| 一级欧美视频| 久久精品国产一区二区| 国产日韩亚洲| 美女视频黄久久| 久久久久免费| 欧美日韩在线二区| 美女黄网久久| 日韩不卡一区二区| 国产精品欧美大片| 最近高清中文在线字幕在线观看1| 日韩中文欧美| 午夜欧美精品久久久久久久| 亚洲精品在线a| 日韩不卡一二三区| 国产一区二区三区精品在线观看| 午夜精品成人av| 欧美另类专区| 日韩不卡一二三区| 日韩免费看片| 一区二区日韩免费看| 国产福利资源一区| 欧美+亚洲+精品+三区| 亚洲精品自拍| 伊人久久国产| 蜜桃91丨九色丨蝌蚪91桃色| 欧美黄色精品| 在线亚洲观看| 国产精品白丝一区二区三区| 日韩免费视频| 欧美在线不卡| 久久一区二区三区喷水| 青草综合视频| 欧美午夜精彩| 麻豆精品视频在线观看| 一区二区亚洲精品| 国产激情一区| 日韩专区在线视频| 另类专区亚洲| 欧美亚洲自偷自偷| 欧美不卡在线| 欧美激情综合| 亚洲资源在线| 欧美aa在线观看| 亚洲精品免费观看| 久久久一二三| 久久免费精品| 日韩欧乱色一区二区三区在线| av日韩中文| 国产美女久久| 亚洲有吗中文字幕| 久久亚洲专区| 精品三级在线| 日本一区福利在线| 亚洲精品a级片| 日韩国产专区| 精品日本视频| 91精品国产自产精品男人的天堂| 久久精品动漫| 久久久久久亚洲精品美女| 一区二区三区网站| 午夜日本精品| 久久亚洲成人| 欧美精选视频一区二区| 六月丁香综合在线视频| 91精品尤物| 婷婷综合国产| 日韩一区精品视频| 黄色欧美日韩| 午夜影院欧美| 国内精品99| 91精品久久久久久久久久不卡| 精品国产一区二区三区av片| 久久国产精品免费一区二区三区| 好吊一区二区三区| 欧美+亚洲+精品+三区| 国产91精品对白在线播放| 日韩电影免费在线观看| 亚洲伊人av| 日韩国产欧美| 999国产精品视频| 欧洲av一区二区| 日本在线高清| 黄在线观看免费网站ktv| 国产专区精品| 福利一区和二区| 91一区二区| 色综合狠狠操| 国产亚洲一区二区手机在线观看| 久久亚洲国产精品尤物| 精品久久影院| 日韩在线高清| 伊人久久亚洲热| 天堂成人国产精品一区| 中文字幕日本一区| 青青草91视频| 国产精品久久乐| 精品亚洲自拍| 久久电影tv| 欧美精品一二| 在线一区二区三区视频| 五月激激激综合网色播 | 久久久久97| 欧美一区免费| 成人午夜网址| 久久精品国产68国产精品亚洲| 欧美日韩免费观看一区=区三区| 亚洲欧美高清| 日韩国产91| 精品久久久久中文字幕小说| 福利精品一区| 免费观看不卡av| 喷白浆一区二区| 欧美欧美黄在线二区| 久久亚洲国产精品尤物| 久久精品亚洲人成影院 | 欧美自拍一区| 精品视频网站| 免费观看不卡av| 日韩精品国产欧美| 久久久免费人体| 91精品精品| 亚洲精品无播放器在线播放| 国产精品网址| 肉色欧美久久久久久久免费看| 九一成人免费视频| 日韩二区在线观看| 美女国产精品久久久| 国产精品国产三级国产在线观看| xxxxx性欧美特大| 免费久久精品视频| 国产精品一区二区中文字幕| 免费一二一二在线视频| 亚洲一区二区三区四区电影| 国产剧情一区二区在线观看| 神马午夜在线视频| 亚洲青青久久| 高清av一区| 亚洲伊人影院| 亚洲精品成人图区| 伊人www22综合色| 国产一区二区精品久| 黄色日韩精品| 国产亚洲人成a在线v网站| 欧美成a人免费观看久久| 日本一区二区中文字幕| 久久婷婷一区| 国产日韩欧美中文在线| 久久精品亚洲欧美日韩精品中文字幕| 午夜精品福利影院| 秋霞影视一区二区三区| 国产麻豆一区二区三区| 欧美a级一区| 精品久久精品| 少妇高潮一区二区三区99| 欧美日韩尤物久久| 国产精品亚洲综合色区韩国| 香蕉人人精品| 国产精品欧美三级在线观看 | 欧美亚洲人成在线| 视频福利一区| 免费亚洲婷婷| 蜜臀av一区二区在线免费观看| 国产在线日韩精品| 亚洲人妖在线| 久久精品中文| 精品国产鲁一鲁****| 日本麻豆一区二区三区视频| 久久男女视频| 精品三级在线观看视频| 日韩精品一级| 亚洲一区二区三区高清| 欧美日韩尤物久久| 精品久久99| 欧美成人一二区| 日韩**一区毛片| 午夜久久福利| 激情婷婷亚洲| 婷婷激情一区| 福利一区和二区| 欧美黑人做爰爽爽爽| 日本a口亚洲| 视频一区日韩| 一区二区视频欧美| 国产综合色区在线观看| 久久一区亚洲| 欧美精品aa| 国产精品伊人| 国产精品嫩模av在线| 日本在线不卡视频一二三区| 美女日韩在线中文字幕| 在线精品小视频| 精品一区欧美| 欧美日韩高清| 欧洲激情综合| 欧美特黄a级高清免费大片a级| 国产精品97| 国产女优一区| 亚洲在线观看| 免费一区二区视频|