day 29 模組和包

2022-05-17 05:27:26 字數 2551 閱讀 4388

閱讀目錄

一。模組和指令碼

模組:定義:如果乙個py檔案被匯入了,他就是乙個模組

指令碼:定義:如果乙個py檔案被直接執行了,那他就是乙個指令碼

模組:1.沒有具體的呼叫過程

2.但是能對外提供功能

當乙個模組被匯入時,如果pyc檔案不存在,python直譯器就回去建立,存在不會再次被建立

pyc編譯檔案: 檔案 -位元組碼-機器碼

編譯的具體過程:

1.從上到下編譯成位元組碼pyc

2.從上到下,解釋執行**

為什麼要編譯

# 1.乙個檔案如果作為模組 一定會經常被匯入

# 2.每次被匯入都要經歷乙個被編譯的過程

# 3.包.編譯耗費時間

# 4.所以模組在被第一次匯入的時候被編譯存在pyc檔案裡

# 5.之後的匯入可以直接吶pyc檔案中的位元組碼,就可以直接執行了

# 編譯檔案 在模組匯入的一瞬間 能夠提高**的執行速度

# 不能提高程式在具體執行的時候的效率

引入模組必須滿足兩個條件:

1.模組名必須滿足變數名的命名規範

2.被匯入的模組所在的位置必須在sys.path所在的搜尋路徑中

當login模組被當做指令碼執行的時候,能夠獨立完成登陸功能

# 當login模組被當做模組匯入的時候,需要等待呼叫才能完成功能

# 當乙個模組被當做指令碼執行的時候,__name__是乙個字串資料型別的'__main__'

# 當乙個模組被當做模組匯入的時候,__name__是乙個字串資料型別模組名

if __name__ == '__main__':

log_in()

# print('__name__ : ',repr(__name__))

# if __name__ == '__main__':

# 控制了

# 只要當前這個檔案直接被執行 就會執行if條件語句內的**

# 否則 就不會執行if條件語句內的**

模組是對外提供功能的

# 如果 我寫的這個模組 足夠大 能提供的功能足夠多

# 多到乙個檔案寫不下

# 把對外提供的功能 根據提供的內容不同,分成幾個檔案

# 把這些檔案放在乙個資料夾下,就形成了包

# django框架 包

# 運算元據庫的 模組

# 和web頁面互動的 模組

# 登入認證 模組

# 安全的中介軟體 模組

# 匯入具體的檔案

# from glance.api import policy

# policy.get()

## import glance.api.policy as policy

# # glance.api.policy.get()

# policy.get()

# 直接匯入包

import sys

print(sys.path)

# import glance

# 使用絕對路徑

# 匯入乙個包 相當於 執行了這個包下面的 __init__.py

# glance #物件

# glance.api.policy.get()

# glance.cmd.manage.main()

# sys.path

from new_pac import glance

# 絕對路徑

# 被直接執行的檔案與包的關係必須是固定的,

# 一旦發生改變,包內的所有關係都要重新指定

# 跨包引用

# import sys

# print(sys.path)

# 在乙個py檔案中使用了相對路徑引入乙個模組

# 那麼這個檔案就不能被當成指令碼執行了

# 包就是py模組的集合

# 自帶__init__.py檔案

# py2 包中必須有乙個__init__.py檔案

# py3

# 能不能匯入乙個包:要看sys.path中的路徑下有沒有這個包

# 從包中匯入模組: 把包與包之間的關係寫清楚,精確到模組,就一定能匯入

# 直接匯入乙個包,並不會匯入包下的模組,而是執行這個包下的__init__.py檔案

# 如果對匯入還有更高的要求

# 可以對包中的__init__.py檔案做定義

# 絕對路徑匯入的方式

# 相對路徑匯入的方式 使用相對路徑匯入的模組不能作為指令碼執行

from new_pec2 import glance

day29 學習總結

編譯時期異常 語法問題,需要開發人員顯示處理 執行時期異常 runtimeexception繼承自exception第一種 捕獲異常 trycatch 異常類名 物件名 finally 第二種 丟擲異常 throws throw 注意 開發中,多使用第一種方法1.位置不同 throws 位於方法宣告...

Java學習日記DAY29

多型 1.向上轉型 隱式轉型 自動轉型 父類引用指向子類例項,可以呼叫子類重寫父類的方法以及父類派生的方法,無法呼叫子類獨有方法 注意 父類中的靜態方法無法被子類重寫,所以向上轉型之後,只能呼叫到父類原有的靜態方法,想要呼叫子類中的靜態方法需要重新向下造型 小類轉型為大類 2.向下轉型 強制型別轉換...

牛客網刷題day29

1.given the following class public class cat public static void main string arg which expression returns true?b a.c1c2 b.c2c3 c.m c1 d.c1.equals m 解析 ...