亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Python > 正文

Python中包的創建與使用

2023-04-24 19:21:34
字體:
來源:轉載
供稿:網友

一個實際應用的程序往往有多個模塊、文件以及其它資源構成,為了清晰有效的組織這些程序,我們需要包來管理這些資源。Python中也支持包的概念。

Python的包是什么

Python包是存放程序模塊和子包的文件夾,是包含若干子包和模塊的命名空間。

每個包必須包含一個名為“__init__.py”的特殊文件,這個文件的內容可以為空,也可以包含導入模塊的數據或信息。

包內可以存放的資源

如何創建一個包

在Python創建一個包可以分為兩步:

(1)創建一個文件夾,并給這個文件夾一個合適的名字,文件夾的名字就是包的名字。

我們可以在操作系統準備創建包的目錄中直接創建,也可以在Python的集成開發環境中進行創建。

(2)在這個文件夾中創建__init__.py文件,這樣就把一個普通的文件夾轉換成了Python包。這個文件用于初始化包并列出包的所有模塊。也可以保持為空。

同樣可以在一個包里創建一個或多個子包,每個包中都要包含__init__.py文件。

Python中創建包和使用自定義包

如何使用一個包

用戶可以使用import導入定義的包。

其語法如下:

import packagename.subpackage1.subpackage2.modulename
import packagename.subpackage1.subpackage2.modulename as newModuleName

包使用的例子

下面先給出包及文件的組織情況:

在Common包中包含兩個子包:math和strings,math包中又包含兩個子包:basic和high。

在具體創建文件時,可以在這些文件夾下直接創建文件,也可以在創建完畢后拷貝到相應的文件中。

使用像Pycharm這種集成的開發環境,可以方便的創建Python包,并在相應的包中創建python文件。

文件suanshu.py中的內容如下:

'''
  求x+y的和
'''

def add(x, y):
    return x + y

'''
   求x - y的差
'''

def sub(x, y):
    return x - y

'''
  求x / y的商
'''

def div(x, y):
    if y == 0:
        raise('除數不能為0.')
    return x / y

'''
求x*y的積
'''

def mul(xy):
    return x * y

文件bijiao.py中的內容如下:

'''求最大值'''
def max(x,y):
    if x>=y:
        return x
    else:
        return y

'''求最小值'''
def min(x, y):
    if x <= y:
        return x
    else:
        return y

文件str_utils.py中的內容如下:

'''字符串轉大寫'''
def toUpper(s):
    return s.upper()

'''字符串轉小寫'''
def toLower(s):
    return s.lower()

'''字符串翻轉'''
def reverse(s):
    return s[::-1]

下面講解具體使用方法。

在Common所在的同一目錄中(注意不是在Common文件夾中)創建測試文件,如test.py。

(1)在test.py中導入若干方法

from Common.math.basic.suanshu import add,sub
x = 5
y = 3
print(add(x, y))
print(sub(x, y))
print(div(x, y))

輸出結果:

8
2
Traceback (most recent call last):
   File "D:/98progarm/python/test.py", line 7, in <module>
      print(div(x,y))
NameError: name 'div' is not defined. Did you mean: 'dir'?

結合代碼和運行結果,我們可以看出,通過from...import語法從Common.math.basic.suanshu中導入了addsub兩個方法,而沒有導入div方法,所以,前兩個輸出了正確的結果,而第3個輸出語句給出了NameError錯誤。

(2)導入整個模塊中的所有內容

可以直接使用下面的語法格式導入包:

import Common.math.basic.suanshu

使用這種導入包或模塊時,需要使用包的全名來使用相關功能。

import Common.math.basic.suanshu

x = 5
y = 3
print(Common.math.basic.suanshu.add(x, y))
print(Common.math.basic.suanshu.sub(x, y))
print(suanshu.div(x, y))

輸出結果:

8
2
Traceback (most recent call last):
  File "D:/98progarm/python/test.py", line 7, in <module>
     print(suanshu.div(x,y))
NameError: name 'suanshu' is not defined

從源程序和輸出結果可以看出,使用 import 包名.子包(模塊)方式引入的方式需要帶上包全路徑名稱。

為了使用上的方便也可以使用下面的方式給引入的包起個別名。

(3)導入包時給包起別名

import Common.math.basic.suanshu as m

x = 5
y = 3
print(m.add(x,y))
print(m.sub(x,y))
print(m.div(x,y))

輸出結果如下:

8
2
1.6666666666666667

從源程序可以看出導入包時給包起別名可以大大減輕書寫上的困難。

(4)使用import *導入全部子模塊

可以使用下面的語法導入某個包中的所有子模塊。

from package.subpackage import *

上面這個語句的含義是從package.subpackage包中導入所有模塊。

但這種語句并非我們想象的那樣:從package.subpackage導入所有模塊,它需要在需導入模塊所在的包的__init__文件中定義名為__all__的列表,在該列表中定義由 import * 需要導入的模塊名稱。

如,我們在basic這個包的__init__文件中添加了下面的語句:

__all__ = ["suanshu"]

然后修改test.py文件中的內容如下:

from Common.math.basic import *

x = 5
y = 3
print(suanshu.add(x,y))
print(suanshu.sub(x,y))
print(suanshu.div(x,y))

輸出結果如下:

8
2
1.6666666666666667

當然,我們也可以使用下面的形式導入一個模塊中的所有內容。

(5)導入一個模塊中的所有內容

 我們可以使用下面的語法格式導入一個模塊中的所有內容:

from package.subpackage.module import *

上面的語句含義是從子包subpackage導入module模塊中的所有內容,這樣,我們可以直接使用module定義的內容,而不必帶前綴。

from Common.math.basic.suanshu import *
import Common.math.high.bijiao as h

x = 5
y = 3
print(add(x,y))
print(sub(x,y))
print(div(x,y))
print(h.max(x,y))

輸出結果如下:

8
2
1.6666666666666667
5

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品97久久| 久久精品国产一区二区三区| 亚洲天堂网在线观看| 久久久久久久久久国产精品| 成人国产在线激情| 色妞久久福利网| www.国产一区| 亚洲福利视频在线| 一区二区国产精品视频| 国产亚洲精品一区二555| 最近2019免费中文字幕视频三| www.国产一区| 一区二区福利视频| 久久久久久国产免费| 两个人的视频www国产精品| 91手机视频在线观看| 日韩欧美中文字幕在线观看| 亚洲视频日韩精品| 欧美国产日本高清在线| 97人洗澡人人免费公开视频碰碰碰| 日韩在线视频中文字幕| 懂色av中文一区二区三区天美| 91影院在线免费观看视频| 欧美视频不卡中文| 欧洲精品久久久| 国产精品久久久久久久久久新婚| 国产精品视频一区国模私拍| 亚洲自拍偷拍色片视频| 久久久久久尹人网香蕉| 成人午夜黄色影院| 福利视频一区二区| 综合久久五月天| 色婷婷久久av| 自拍亚洲一区欧美另类| 亚洲天堂av电影| 青草青草久热精品视频在线网站| 欧美极品美女视频网站在线观看免费| 欧美一级大胆视频| 国产视频自拍一区| 午夜精品在线观看| 久久91亚洲精品中文字幕| 中文字幕亚洲综合久久| 黑人巨大精品欧美一区二区三区| 国内精品久久久久久中文字幕| 69av成年福利视频| 欧美精品videosex牲欧美| 欧美一级片在线播放| 久久免费视频网| 成人av电影天堂| 性欧美激情精品| 久久久国产精品免费| 成人中心免费视频| 大量国产精品视频| 国产成人精品免费视频| 国产亚洲激情在线| 亚洲国内精品在线| 亚洲日韩欧美视频一区| 操人视频在线观看欧美| 国产丝袜一区视频在线观看| 欧洲美女7788成人免费视频| 欧美午夜电影在线| 日韩中文字幕在线免费观看| 久久影院资源网| 蜜臀久久99精品久久久无需会员| 久久久久日韩精品久久久男男| 九九热99久久久国产盗摄| 国产精品a久久久久久| 成人黄色在线观看| 亚洲美女av在线播放| 欧美裸体xxxxx| 国产一区二区三区欧美| 91美女片黄在线观| 91久久综合亚洲鲁鲁五月天| 精品久久久久久亚洲国产300| 成人免费网站在线| 国产亚洲精品激情久久| 日韩小视频网址| 亚洲精品一区二区网址| 在线成人激情黄色| 亚洲性xxxx| 国产亚洲精品高潮| 91在线免费观看网站| 国产美女被下药99| 亚洲欧美国产精品久久久久久久| 国产精品三级美女白浆呻吟| 国产在线播放不卡| 亚洲国产欧美一区二区丝袜黑人| 国产乱肥老妇国产一区二| 色小说视频一区| 久久久999精品视频| 国产一区二区三区日韩欧美| 日韩欧美在线观看| 欧美黑人极品猛少妇色xxxxx| 久久男人的天堂| 亚洲天堂免费视频| 一区二区三区黄色| 欧美激情一区二区三区久久久| 在线播放国产精品| 色偷偷噜噜噜亚洲男人的天堂| 国产精品入口福利| 日韩欧美精品在线观看| 亚洲国产精品免费| 国产精品国产自产拍高清av水多| 国产在线观看91精品一区| 中文字幕自拍vr一区二区三区| 97在线观看免费高清| 欧美日韩成人在线视频| 91中文字幕在线| 亚洲日本成人女熟在线观看| 91久久久久久国产精品| 成人精品视频在线| 欧美日本黄视频| 欧美色道久久88综合亚洲精品| 色yeye香蕉凹凸一区二区av| 国产一区二区三区免费视频| 国产区精品在线观看| 欧美人在线视频| 亚洲一级免费视频| 黑人巨大精品欧美一区二区免费| 日韩一区二区欧美| 中日韩美女免费视频网址在线观看| 日日狠狠久久偷偷四色综合免费| 亚洲丝袜在线视频| 国产啪精品视频网站| 92版电视剧仙鹤神针在线观看| 九九热最新视频//这里只有精品| 欧美激情精品久久久久久免费印度| 成人激情av在线| 久久精品色欧美aⅴ一区二区| 欧美激情亚洲自拍| 久热爱精品视频线路一| 68精品久久久久久欧美| 在线丨暗呦小u女国产精品| 欧美猛交免费看| 欧美电影免费观看| 久久久亚洲国产| 久久成人精品视频| 成人在线国产精品| 国产97人人超碰caoprom| 色琪琪综合男人的天堂aⅴ视频| 国产成人精品久久二区二区91| 性欧美xxxx| 97人洗澡人人免费公开视频碰碰碰| 91网站免费观看| 岛国av一区二区在线在线观看| 久久夜色精品国产亚洲aⅴ| 91国产精品电影| 欧美丰满片xxx777| 色综合老司机第九色激情| 在线播放日韩av| 欧美激情一二三| 精品无码久久久久久国产| 国产精品久久久久免费a∨大胸| 亚洲影视九九影院在线观看| 欧美一级黑人aaaaaaa做受| 岛国av一区二区在线在线观看| 久久亚洲春色中文字幕| 欧美午夜片在线免费观看| 日本欧美中文字幕| 国产精品视频免费在线| 2020久久国产精品| 欧美激情一级欧美精品| 国产精品久久久久久久久免费| 米奇精品一区二区三区在线观看|