Python之包 模組 函式與變數作用域(四)

2021-09-20 03:55:25 字數 2624 閱讀 7887

最頂級的組織結構:包(資料夾)

第二個層級:模組(檔案)

第三個層級:類

第四個層級:函式、變數(不屬於組織結構,是類本身的特性)

1.區分不同包的同名模組:包名.模組名

形成的模組的路徑叫做命名空間

2.乙個包下面可以有子包,模組可以和包平級

3.普通資料夾想要變成包必須要有__init__.py檔案

__init__.py本身也是乙個模組,可以不寫內容只是標註包

特殊的,__init__.py模組的名字就是包名

對於重複的定義可以從其他模組裡引用,不需要重複編寫。

1.語法:import 模組名

若被匯入模組在子包下面,要加上命名空間,語法:import  子包名.模組名

2.引用匯入模組的某乙個變數的語法:模組名.變數名

import t.c

print(t.c.a)

3.可以用as進行簡寫

舉例

import t.c as m

print(m.a)

#print(t.c.a)

1.匯入變數

from t.c import a

print(a)

#不需要寫成print(t.c.a)

2.匯入模組(不推薦)

from t import c

print(c.a)

3.引用大量變數時使用 * :

from c import *
4."*"會一次性的把模組下面所有的變數或者函式全部匯入進來,但是在實際的編碼過程中不太可能在引入的時候需要全部的變數,那麼就需要我們控制 * 的行為,讓 * 匯入的時候只匯入我們指定的變數。

#test1.c

__all__ = ['a','c']    #用內建變數__all__來控制 * 的選擇範圍

a = 1

b = 2

c = 3

d = 4

#test1.c2 

from c import *

print(a)

print(c)

print(d)       #d沒有被列印,報錯

執行結果:1   3

1.隱藏__pycache__資料夾:

檔案→首選項→設定→搜尋files.exclu,新增"**/_pycache_":true,儲存

2.__init__.py檔案的作用:

當包被匯入時,init.py會首先自動被執行

#t.__init__.py

a = 'this is a __init__.py file'

print(a)

#c11.py

import t #匯入包t,t裡面的__init__.py檔案就會被自動執行

執行結果:this is a __init__.py file

假如不匯入包,而是匯入包裡面模組的某個變數,init檔案依舊會自動執行

#t.c7.py

__all__ = ['a','c']

a = 2

c = 3

d = 4

#c12.py

from t.c7 import a

執行結果:this is a __init__.py file

3.__init__.py的應用場景:

#t.__init__.py

__all__ = ['c7'] #初始化*,標明哪些模組被匯出

#t.c7.py

__all__ = ['a','c']

a = 2

c = 3

d = 4

#t.c8.py

e = 2

f = 3

g = 4

#c11.py

from t import * #* 表示匯入 t 包裡的所有模組

print(c7.a) #c7在init中被定義,可引用

print(c8.e) #c8在init中未定義,不可引用

執行結果是2

4.__init__.py的重要作用

#t包下面的__init__.py

import sys #批量導入庫,內建標準庫

import datetime

import io

#c13.py

import t

print(t.sys.path) #在這裡插入**片

1.包和模組是不會被重複的匯入的,只會執行一次

2.避免迴圈匯入,不要形成閉環(多個模組之間形成閉環)

3.匯入模組的時候會執行模組裡所有的**

參考: 

Python 五 包 模組 函式與變數作用域

condition 1 while condition 5 condition 1 print hello else print eof hello hello hello hello hello eof 主要是用來遍歷 迴圈 序列或者集合 字典 a a b c d 1,2,3 for x in a...

Python之模組與包

a 在 python 中,乙個.py檔案就稱之為乙個模組 module 大大提高了 的可維護性 編寫 不必從零開始。當乙個模組編寫完畢,就可以被其他地方引用 b 呼叫函式時用import a getpass模組提供了可移植的密碼輸入 import getpass getpass.getpass b ...

Python之模組與包

模組匯入過程 0.先判斷sys.modules字典中檢視模組是否已經存在,如存在則不做任何操作 1.從sys.path路徑下找到模組 2.建立模組的命名空間 3.把檔案中的名字都放到這個命名空間裡 import sys print sys.path import modue1 import只匯入一次...