day21 學習筆記

2022-08-17 07:45:13 字數 1369 閱讀 1890

乙個python檔案有兩種用途:1.被當做程式執行

2.被當做模組匯入

二者的區別: ps(**)__name__==main

import匯入模組在使用時必須加上字首「模組.」

優點:肯定不會與當前空間中名字衝突

缺點:顯得麻煩

from模組名import函式名( 函式名是在當前位置的全域性變數,但是指向的記憶體位址是模組的記憶體位址)

通過這種方式匯入的時候發生了三件事:

1.產生乙個模組的命名空間

2.執行時將產生的名字都丟進模組的的命名空間去

3.在當前命名空間拿到乙個名字,該名字與模組命名空間中的某乙個記憶體位址繫結

優點:精簡

缺點:會和當前命名空間產生混淆

也可以一行匯入多個名字

from 模組名 import * 可以一次性匯入模組中的所有名字 (不推薦)

了解 __all__ = ["模組名"] *匯入的時候會根據模組中此屬性來找方法

as 可以用來取別名

迴圈匯入問題:發生兩個模組的相互導用,應該將公用的方法放在乙個統一的模組中,或者將匯入過程放在方法內部

模組搜尋路徑優先順序:無論是import 還是from 再匯入模組是都涉及到查詢問題

優先順序:

1.記憶體

2.按照sys.path中存放的檔案順序依次尋找檔案

sys 模組下 sys.path方法 存放了一系列資料夾,其中第乙個資料夾是當前執行檔案所在的資料夾

了解:sys.modules 檢視已經載入到記憶體中的模組

python 本身提供一種優化機制,在匯入模組後,所開闢的記憶體空間不會因為沒有指定或者函式類的空間釋放而釋放,是會一直存在知道程式執行結束

sys.path 的應用:跨檔案匯入模組,可以先利用像sys.path列表裡新增路徑來完成

模組格式規範: 模組的文件描述

匯入模組

定義全域性變數

定義類定義函式

2、包a和包b下有同名模組也不會衝突,如a.a與b.a來自倆個命名空間

3、import匯入檔案時,產生命名空間中的名字**於檔案,import 包,產生的命名空間的名字同樣**於檔案,即包下的__init__.py,匯入包本質就是在匯入該檔案

相對匯入:.代表當前檔案所在的目錄,..代表當前目錄的上一級目錄,依此類推

相對匯入只能用from module import symbol的形式,import ..versions語法是不對的,且symbol只能是乙個明確的名字

針對包內部模組之間的相互匯入推薦使用相對匯入,需要特別強調:

1、相對匯入只能在包內部使用,用相對匯入不同目錄下的模組是非法的

2、無論是import還是from-import,但凡是在匯入時帶點的,點的左邊必須是包,否則語法錯誤

day21 學習總結

string s new string 建立乙個空的字串序列 string s new string hello 建立乙個內容為 hello 的字串 string s hello 建立乙個內容為 hello 的字串 string s new string char chars 通過字元陣列建立乙個字...

python學習筆記 day21 包和異常

通俗的講之前我們學序列化模組時,有個json 它其實是乙個資料夾 裡面有很多py檔案 應該就算是乙個包 然後匯入包的時候,前面一定是乙個包名,然後可以有兩種方式import 包名 或者 from 包 import 模組 這種匯入方式 包那塊可以有.但是import 後面必須是乙個變數名,絕對不能有....

每日演算法 day 21

那些你早出晚歸付出的刻苦努力,你不想訓練,當你覺的太累了但還是要咬牙堅持的時候,那就是在追逐夢想,不要在意終點有什麼,要享受路途的過程,或許你不能成就夢想,但一定會有更偉大的事情隨之而來。mamba out 2020.3.4 記憶化搜尋 include include include include...