python 3 基礎之包

2022-03-23 04:00:31 字數 1996 閱讀 6783

包是乙個分層次的檔案目錄結構,它定義了乙個由模組及子包,和子包下的子包等組成的 python 的應用環境。

簡單來說,包就是資料夾,但該資料夾下必須存在 __init__.py 檔案, 該檔案的內容可以為空。__init__.py用於標識當前資料夾是乙個包

1、包中的__init__.py

__init__.py控制著包的匯入行為

建立包後,包裡自動生成乙個__init__.py在python3中沒有意義,刪掉也沒問題

在python2 中是有作用的,若在python2中不定義乙個__init__.py會導致其他模組不能使用該包中的模組

1.1、可以在__init__.py檔案裡新增內容,當匯入此包中的模組時,__init__.py檔案**就會執行

1.2、若包裡沒有__init__.py檔案,則其他模組匯入此包(說的是只匯入包,不是模組,即在其他包的模組檔案中只匯入包名(不導模組名也可以使用模組))時:

python2匯入失敗;python3可以成功匯入,但是使用包中模組時會報錯

接下來可以在包裡建立乙個__init__.py檔案,建立後:python2匯入成功,但模組不能使用;python3可以成功匯入,但模組不能使用(__init__.py在python3中沒有意義,刪掉也沒問題)

第三步,若要使用包中的模組,python2中需要在__init__.py檔案裡寫入匯入的模組名:import 模組名;python3中用python2的方式不能解決問題,需要這樣:from . import 模組名(.點表示的是當前路徑)

2、使用包裡的模組

包裡的模組匯入:import 包名.模組名 as 別名

包名:package_test,包裡檔案:__init__.py(空) 、test_1.py

test_1.py內容

def func():

print(

'測試包 test_1

')

在另外的包有個test.py模組,在此模組呼叫package_test/test_1.py

import package_test.test_1 as

test

test.func()

*********************************************=執行結果:

測試包 test_1

3、__all__

__init__.py檔案中,定義乙個__all__變數,它控制著 from 包名 import *時匯入的模組

__all__也屬於模組中的變數,如果乙個模組用了__all__ = ['變數1','變數2'.....],且另外乙個模組匯入該模組的方式是:from 包名 import *

那麼只有在__all__的列表中的字串(變數)才可以在其他模組使用

例:test.py

# 條件 其他模組必須是通過from 模組名 import *方式匯入的模組

__all__ = ["

name

",'add2num']

name = "

加法運算

"def add2num(a, b):

return a +b

def delnum(a,b):

return a - b

ceshi.py

from test import *# 可以正常呼叫

print(name)

print(add2num(

33,8

))# 呼叫delnum函式失敗

f = delnum(33,2

)print(f)

***********************************===

報錯資訊:nameerror: name 'test' is not defined

Python3之基礎語法

1 編碼 預設情況下,python3原始碼檔案以utf 8編碼,所有字串是unicode字串 2 識別符號 3 保留字 python保留字即關鍵字,不能用於任何識別符號名稱。python標準庫提供了keyword模組,輸出當前版本的所有關鍵字 import keyword keyword.kwlis...

python3基礎之字典

字典是另一種可變容器模型,且可儲存任意型別物件。字典的每個鍵值 key value 對用冒號 分割,每個對之間用逗號 分割,整個字典包括在花括號 中 格式如下所示 d 鍵必須是唯一不可變的 數字 字串 元組 但值則不必。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。乙個簡單的字典例項...

python3的樣子 python3 基礎

第一周 語言基礎 一 python是一門什麼樣的語言?解釋型動態型別強型別定義語言。二 python2和3的主要區別?1 python3裡可以直接預設寫中文,然後python2裡是不能直接寫的。2 python2裡print不用加括號,可直接寫字串,也可以加 python3裡printi必須要加括號...