国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python - 模塊module

ranwu / 1423人閱讀

摘要:一什么是模塊中,一個(gè)文件就稱之為一個(gè)模塊。所有的內(nèi)置函數(shù)為避免模塊名沖突,又引入了按目錄來(lái)阻止模塊沖突的方法,稱為包。例如下列小程序以自建的模塊,編寫(xiě)一個(gè)的模塊。如果在其他地方導(dǎo)入該模塊時(shí),判斷將失敗,即僅在此模塊多帶帶運(yùn)行時(shí)生效。


一、什么是模塊

Python中,一個(gè).py文件就稱之為一個(gè)模塊。
那么使用模塊有什么好處呢?

(1)提高了代碼的可維護(hù)性。
(2)代碼不必從零開(kāi)始,當(dāng)一個(gè)模塊編寫(xiě)完畢后,就可以被其他地方應(yīng)用。
(3)可以避免函數(shù)名和變量名沖突,相同的函數(shù)名和變量可以存放在不同的模塊中,但是要注意盡量不要與內(nèi)置函數(shù)名字沖突。
Python所有的內(nèi)置函數(shù):https://docs.python.org/3/lib...

為避免模塊名沖突,python又引入了按目錄來(lái)阻止模塊沖突的方法,稱為(python package)。
一個(gè)abc.py的文件就是一個(gè)名字為abc的模塊,一個(gè)xyz.py的文件就是一個(gè)名字為xyz的模塊。假如abcxyz這兩個(gè)模塊名字與其他模塊沖突了,于是我們可以通過(guò)不同的包來(lái)組織模塊,避免模塊沖突。
則可為:

↓ mycompany      # 按目錄存放
     _init_.py   # 模塊名:mycompany
     abc.py      # 模塊名:mycompany.abc
     xyz.py      # 模塊名:mycompany.xyz

引入了包以后,只要頂層的包名不與別人沖突,那所有模塊都不會(huì)與別人沖突。
每一個(gè)包目錄下都會(huì)有一個(gè)_init_.py的文件,這個(gè)文件是必須存在的,否則python就把這個(gè)目錄當(dāng)成普通目錄,而不是一個(gè)包。
_init_.py可以是空文件,也可以有python代碼,因?yàn)?b>_init_.py本身就是一個(gè)模塊。

二、使用Python自帶模塊

Python內(nèi)置了很多非常有用的模塊,只要安裝完畢,這些模塊就可以通過(guò)import立刻導(dǎo)入使用。
例如下列小程序:以自建的sys模塊,編寫(xiě)一個(gè)hello的模塊hello.py

# !/usr/bin/env python    # -1-
# -*-coding:utf-8 -*-     # -2- 
_author_ = "xionglp"      # 使用_author_變量把作者寫(xiě)進(jìn)去

import sys   

def test(): 
    args = sys.argv  
    if len(args) == 1: 
        print ("hello,world!") 
    elif len(args) ==2: 
        print("hello,%s !"% args[1]) 
    else: 
        print("too many arguments!") 
if __name__ == "__main__":
    test()

說(shuō)明:

注釋 # -1- :讓該.py文件直接在unix/linux/mac上運(yùn)行

注釋 # -2- :.py文件使用標(biāo)準(zhǔn)UTF-8 編碼

import sys:導(dǎo)入sys模塊。之后便可以利用sys這個(gè)變量,訪問(wèn)sys模塊的所有功能。
sys模塊有一個(gè)argv變量,用list存儲(chǔ)了命令行的所有參數(shù)。argv至少有一個(gè)元素,因?yàn)榈谝粋€(gè)參數(shù)永遠(yuǎn)是該.py文件的名稱。

當(dāng)在命令行運(yùn)行hello.py文件時(shí),python解釋器就把一個(gè)特殊變量__name__置為__main__。如果在其他地方導(dǎo)入該模塊時(shí),if判斷將失敗,即if僅在此模塊多帶帶運(yùn)行時(shí)生效。因此這種if測(cè)試可以讓一個(gè)模塊通過(guò)命令行運(yùn)行時(shí)執(zhí)行一些額外的代碼,最常見(jiàn)的就是運(yùn)行測(cè)試。

在交互式環(huán)境(cmd)中導(dǎo)入該模塊:

>>> import hello                         
>>> hello.test()                   
hello, world! 
三、安裝使用第三方模塊

除了Python自己的包,還可以安裝安裝第三方模塊。第三方包安裝是通過(guò)包管理工具pip完成的。
一般來(lái)說(shuō),第三方庫(kù)都會(huì)在Python官方的pypi.python.org網(wǎng)站注冊(cè)。所以要安裝一個(gè)第三方庫(kù),必須先知道該庫(kù)的名稱,可以在官網(wǎng)或者pypi上搜索。比如Pillow的名稱叫Pillow,因此,安裝Pillow的命令就是:pip install Pillow

步驟1:找到安裝Python路徑中的easy_install.exe,例如:D:PythonScripts

步驟2:打開(kāi)cmd,輸入安裝命令:easy_install.exe pip (pip安裝成功)

步驟3:在cmd下執(zhí)行pip,輸入命令:pip install pillow

如下:

安裝成功后便可以使用Pillow了。其他常用的第三方庫(kù)還有:MySQL的驅(qū)動(dòng)、用于科學(xué)計(jì)算的NumPy庫(kù)等等。

pip升級(jí):
在使用pip進(jìn)行安裝時(shí),有時(shí)候會(huì)提示pip的版本太低,需要upgrade。提示會(huì)給出要執(zhí)行的語(yǔ)句,按照提示執(zhí)行就行。
執(zhí)行命令:python –m pip install –upgrade pip

四、模塊搜索路徑

我們也可以導(dǎo)入自己寫(xiě)入的模塊。當(dāng)我們?cè)噲D加載一個(gè)模塊時(shí),Python會(huì)在指定的路徑下搜索對(duì)應(yīng)的.py文件,如果找不到,就會(huì)報(bào)錯(cuò),例如:

默認(rèn)情況下,Python解釋器會(huì)搜索當(dāng)前目錄、所有已安裝的內(nèi)置模塊和第三方模塊,搜索路徑存放在sys模塊的path變量中:

>>>import sys
>>>sys.path

如果我們要添加自己的搜索目錄,有兩種方法:

法一:直接修改sys.path,添加要搜索的目錄,這種方法是在運(yùn)行時(shí)修改,運(yùn)行結(jié)束后失效。

>>> import sys
>>> sys.path.append("/Users/xionglp/my_py_scripts")

法二:設(shè)置環(huán)境變量PYTHONPATH,該環(huán)境變量的內(nèi)容會(huì)被自動(dòng)添加到模塊搜索路徑中。設(shè)置方式與設(shè)置Path環(huán)境變量類似。注意只需要添加你自己的搜索路徑,Python自己本身的搜索路徑不受影響。


【補(bǔ)充點(diǎn)能量】if __name__ =="__main__":

__name__:為系統(tǒng)變量,有兩個(gè)取值。當(dāng)模塊是被調(diào)用執(zhí)行時(shí),取值為模塊的名字;當(dāng)模塊是直接執(zhí)行時(shí),則該變量取值為__name__

if __name__ == "__main__"實(shí)現(xiàn)的功能:可以讓模塊既可以導(dǎo)入到別的模塊中用,也可以自己執(zhí)行。

英文解釋說(shuō):make a script both importable and executeable

例如:新建模塊atest.py

# !/usr/bin/env python3
# -*- coding:utf-8 -*-
"a test module"
def addFunc(a, b):
    return a + b
print("a_test_module"s result is ", addFunc(1, 1))

新建模塊anothertest.py

# !/usr/bin/env python3
# -*- coding :utf-8 -*-
"another test module"
import  atest
print("調(diào)用another test module模塊執(zhí)行的結(jié)果時(shí):",atest.addFunc(12,23))

運(yùn)行:

D:Python_project>python atest.py
a_test_module"s result is  2
D:Python_project>python anothertest.py
a_test_module"s result is  2
調(diào)用another test module模塊執(zhí)行的結(jié)果時(shí): 35

說(shuō)明:當(dāng)運(yùn)行anothertest.py的時(shí)候,先運(yùn)行了atest.py,再運(yùn)行anothertest.py。
若不希望出現(xiàn)atest的內(nèi)容,python提供了一個(gè)系統(tǒng)變量:__name__。可以把被調(diào)用的測(cè)試代碼寫(xiě)在if語(yǔ)句里,當(dāng)調(diào)用該module時(shí),此時(shí)的__name__取值為該模塊的名字,所以if判斷為假,不執(zhí)行后續(xù)代碼如下:

if __name__ == "__main__":`
       print ("atest的計(jì)算結(jié)果:",addFunc(1,1))

則運(yùn)行結(jié)果為:

D:Python_project>python anothertest.py
調(diào)用another test module模塊執(zhí)行的結(jié)果時(shí): 35

此時(shí)我們就得到了預(yù)期結(jié)果,不輸出多余的結(jié)果。


? thanks for watching, keep on updating...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/42469.html

相關(guān)文章

  • python基礎(chǔ)教程:Python模塊(module)

    摘要:如果你這個(gè)腳本想要使用其它腳本里面的變量函數(shù)和類也是可以的,在你這個(gè)腳本里面用來(lái)導(dǎo)入要引用的腳本,而那個(gè)被引用的腳本就稱作模塊。 在此之前,我們運(yùn)行一些簡(jiǎn)短的Python代碼,都是通過(guò)Python解釋器(python或ipython)進(jìn)行的,如果我們退出解釋器再重新運(yùn)行解釋器后,上次敲進(jìn)去的變量、函數(shù)等都不見(jiàn)了,沒(méi)有保存下來(lái)。為了保存我們?cè)?jīng)寫(xiě)過(guò)的代碼,就是要寫(xiě)成.py文件,稱為腳本。...

    whinc 評(píng)論0 收藏0
  • Python標(biāo)準(zhǔn)庫(kù)系列之模塊介紹

    摘要:的模塊其實(shí)就是封裝了一個(gè)或者多個(gè)功能的代碼集合,以便于重用,模塊可以是一個(gè)文件也可以是一個(gè)目錄,目錄的形式稱作包。已經(jīng)導(dǎo)入的模塊會(huì)保存在字典中。 Python的模塊其實(shí)就是封裝了一個(gè)或者多個(gè)功能的代碼集合,以便于重用,模塊可以是一個(gè)文件也可以是一個(gè)目錄,目錄的形式稱作包。 模塊分類 內(nèi)置模塊 內(nèi)置模塊可以理解成當(dāng)你安裝好python環(huán)境之后,直接可以使用import導(dǎo)入的就是內(nèi)置模塊,...

    v1 評(píng)論0 收藏0
  • 充分理解 python -m mod

    摘要:最近在看的官方文檔,提到一個(gè)的用法,很是不理解,所以查找了很多文檔,并進(jìn)行了如下總結(jié)。的用途定位并執(zhí)行該模塊。可讀取包內(nèi)任何文件內(nèi)容。如果沒(méi)有,則從查找,找到后載入內(nèi)存,并加入到字典,名稱也將導(dǎo)入到當(dāng)前模塊的命名空間。 最近在看 __main__ 的官方文檔 —— https://docs.python.org/3/library/__main__.html#module-__main...

    Allen 評(píng)論0 收藏0
  • Python相對(duì)導(dǎo)入導(dǎo)致SystemError的解決方案(譯)

    摘要:相對(duì)導(dǎo)入相對(duì)導(dǎo)入使用模塊的決定它是否在一個(gè)包內(nèi)。當(dāng)你是用類似進(jìn)行相對(duì)導(dǎo)入的時(shí)候,點(diǎn)表明在包的層次中上升多少。所以,你不能在交互式會(huì)話中直接使用任何相對(duì)導(dǎo)入。 源題目與答案地址如下http://stackoverflow.com/questions/14132...。下面是我的翻譯(看作機(jī)翻也行),以及原文。 這個(gè)問(wèn)題是如何解決在相對(duì)導(dǎo)入的時(shí)候,如果出現(xiàn)System Error的時(shí)候的解...

    ethernet 評(píng)論0 收藏0
  • Python 程序構(gòu)架淺析

    摘要:一概念通常的程序的構(gòu)架是指將一個(gè)程序分割為源代碼文件的集合以及將這些部分連接在一起的方法。的程序構(gòu)架可表示為一個(gè)程序就是一個(gè)模塊的系統(tǒng)。它有一個(gè)頂層文件啟動(dòng)后可運(yùn)行程序以及多個(gè)模塊文件用來(lái)導(dǎo)入工具庫(kù)。導(dǎo)入是中程序結(jié)構(gòu)的重點(diǎn)所在。 一、概念 通常的Python程序的構(gòu)架是指:將一個(gè)程序分割為源代碼文件的集合以及將這些部分連接在一起的方法。 Python的程序構(gòu)架可表示為: showImg...

    hss01248 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<