Python3入門(八)模組

2021-09-25 02:38:06 字數 2119 閱讀 4578

模組是乙個包含所有你定義的函式和變數的檔案,其字尾名是.py。模組可以被別的程式引入,以使用該模組中的函式等功能。這也是使用python 標準庫的方法

使用 python 原始檔,只需在另乙個原始檔裡執行 import 語句,語法如下

import module1[, module2[,... modulen]

當直譯器遇到 import 語句,如果模組在當前的搜尋路徑就會被匯入。搜尋路徑是乙個直譯器會先進行搜尋的所有目錄的列表,以下為乙個demo

def

test()

:print

("hello import"

)

import test

test.test(

)

輸出:

hello import

乙個模組只會被匯入一次,不管你執行了多少次import。這樣可以防止匯入模組被一遍又一遍地執行。當我們使用import語句的時候,python直譯器是怎樣找到對應的檔案的呢?這就涉及到python的搜尋路徑,搜尋路徑是由一系列目錄名組成的,python直譯器就依次從這些目錄中去尋找所引入的模組。這看起來很像環境變數,事實上,也可以通過定義環境變數的方式來確定搜尋路徑。搜尋路徑是在python編譯或安裝的時候確定的,安裝新的庫應該也會修改。搜尋路徑被儲存在sys模組中的path變數

python 的 from 語句讓你從模組中匯入乙個指定的部分到當前命名空間中

from modname import name1[, name2[, ... namen]]
例如對上面匯入的test.py進行改變,增加乙個方法

def

print1()

:print

("hello import"

)def

print2()

:print

("no hello"

)

進行匯入:

from test import print1

print1(

)

只匯入print1方法

把乙個模組的所有內容全都匯入到當前的命名空間也是可行的

from test import*

print1()

print2()

乙個模組被另乙個程式第一次引入時,其主程式將執行。如果我們想在模組被引入時,模組中的某一程式塊不執行,我們可以用__name__屬性來使該程式塊僅在該模組自身執行時執行:

def

print1()

:print

("hello import"

)def

print2()

:print

("no hello"

)if __name__ ==

'__main__'

:print

("主程式在執行"

)else

:print

("其他在執行"

)

from test import

*print1(

)

執行test.py時會輸出:

主程式在執行

執行test2.py輸出:

其他在執行

hello import

內建的函式 dir() 可以找到模組內定義的所有名稱。以乙個字串列表的形式返回

import test

print

(dir

(test)

)

返回:

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'print1', 'print2']

python3使用 python3使用模組

python內建了很多非常有用的模組,只要安裝完畢,這些模組就可以立刻使用。我們以內建的sys模組為例,編寫乙個hello的模組 usr bin env python3 coding utf 8 a test module author michael liao import sys def tes...

Python3 使用模組

python本身就內建了很多非常有用的模組,只要安裝完畢,這些模組就可以立刻使用。我們以內建的sys模組為例,編寫乙個hello的模組 usr bin env python3 coding utf 8 a test module author michael liao import sys def ...

python3 常用模組 RE模組

一.常用正規表示式符號和語法 匹配所有字串,除 n以外 表示範圍 0 9 匹配前面的子表示式零次或多次。要匹配 字元,請使用 匹配前面的子表示式一次或多次。要匹配 字元,請使用 匹配字串開頭 匹配字串結尾 re 轉義字元,使後乙個字元改變原來的意思,如果字串中有字元 需要匹配,可以 或者字符集 re...