Python (十二)模組

2021-07-23 12:22:10 字數 3152 閱讀 5800

python的內建函式 一、

python模組,乙個.py檔案就是乙個模組,模組中可以有很多的函式,不同的模組之間可能存在命名衝突的問題,使用包名可以解決這樣的問題。只要包名不相同與內建的函式命名沒有衝突就不會存在命名衝突的問題。

乙個包含有__init__.py的資料夾就是乙個包,只有包含有這個檔案的資料夾才會被識別為乙個包,__init__.py檔案的內容可以使引用其他檔案也可以是引用自己所在的包的內容,也可以什麼都不寫。

這個目錄結構中,mycompany就是包名,在使用內部的模組的時候只需要將包名引入就可以使用了

注意:不可缺少__init__.py檔案。

二、使用

(1)在同乙個目錄中引用

python搜尋庫的順序:當前檔案、系統檔案、第三方庫

所以在當前的資料夾中引用直接宣告就可以,不需要指明具體的路徑

在磁碟上建立乙個資料夾mycompany

在資料夾中建立兩個python檔案,abc.py   xyz .py這兩個檔案的內容都是實現排序,順序正好相反。

abc.py

def sort(num):

for x in xrange(0,len(num)):

for y in xrange(0,len(num)):

if num[x] >= num[y]:

t = num[x]

num[x] = num[y]

num[y] = t

return num

xyz .py

def sort(num):

for x in xrange(0,len(num)):

for y in xrange(0,len(num)):

if num[x] <= num[y]:

t = num[x]

num[x] = num[y]

num[y] = t

return num

if __name__ == '__main__':

l = [90,2,3,4,65,23]

print sort(l)

再建立乙個__init__.py檔案。檔案內容為空

在g盤建立乙個test.py檔案,測試使用上面定義的模組

import mycompany    引入包

if __name__ == '__main__':

s = [2,43,1,8,56]

print mycompany.abc.sort(s)

print mycompany.xyz.sort(s)

注意:模組在引入的時候有兩種,第一種是只引入包名,之後在使用的模組的時候必須  通過包名 . 模組名 . 函式  這樣的方式引用函式內容

第二種,引入某乙個具體的函式,在使用的時候就可以直接使用函式不再需要以上的方式引用函式。

import mycompany

from mycompany.abc import sort

if __name__ == '__main__':

s = [2,43,1,8,56]

print sort(s)

print mycompany.xyz.sort(s)

三、第三方模組

python有很多內建的模組,只需要安裝之後就可以使用

#!/usr/bin/env python

# -*- coding: utf-8 -*-

' a test module '

__author__ = 'michael liao'

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()

命令列引數的使用是在sys模組

四、別名

再匯入模組的時候還可以使用別名實現

try:

import cstringio as stringio

except importerror: # 匯入失敗會捕獲到importerror

import stringio

五、作用域

在c中變數的作用域分為全域性變數、區域性變數、靜態變數等,各自的生命週期也不一樣。在python中也是這樣。

類似__***__這樣的變數是特殊變數,可以被直接引用,但是有特殊用途。,一般不這樣定義變數。

類似_***__***這樣的函式或變數就是非公開的(private),不應該被直接引用,比如_abc__abc

private函式和變數「不應該」被直接引用,而不是「不能」被直接引用,是因為python並沒有一種方法可以完全限制訪問private函式或變數,但是,從程式設計習慣上不應該引用private函式或變數。

這個規定對於函式來說也是一樣的,這個需要注意

六、模組的搜尋路徑

自定義的模組和使用的檔案不在同乙個目錄下的時候,在使用的時候就需要告訴程式如何找到自定義的模組,這就需要在搜尋中新增搜尋的路徑。

在程式的開始處新增這樣的語句,系統就會到新增的路徑中搜尋,這樣的方式只在當前有效,還可以直接新增到系統中(根據需求)

import sys

import mycompany

if __name__ == '__main__':

s = [2,43,1,8,56]

print mycompany.abc.sort(s)

print mycompany.xyz.sort(s)

Python學習筆記(十二) Python模組

一 python模組 python 模組 module 是乙個 python 檔案,以 py 結尾,包含了 python 物件定義和python語句。模組讓你能夠有邏輯地組織你的 python 段,把相關的 分配到乙個模組裡能讓你的 更好用,更易懂。模組能定義函式,類和變數,模組裡也能包含可執行的 ...

python簡說(十二)time模組

1.時間戳 print int time.time 2.取當前格式化好的時間 time.strftime y m d h m s 3.時間戳轉為格式化好的時間 time1 time.gmtime int time.time 把時間戳轉成時間元組 res time.strftime y m d h m...

十二 python 模組和包的使用

模組是python組織 的基本方式。乙個python指令碼可以單獨執行,也可以匯入到另乙個指令碼中執行,當指令碼被匯入執行時,我們將其稱為模組 module 所有的.py檔案都可以作為乙個模組匯入。模組名與指令碼的檔名相同,例如我們寫了乙個hello.py的檔案,我們在另外乙個指令碼中可以用impo...