建立乙個aaa的包,自行建立乙個__init__py檔案
回憶 建立乙個tbjx模組發生的三件事:
將該tbjx檔案載入到記憶體.
建立乙個以tbjx命名的命名空間.
通過tbjx. 的方式引用tbjx模組的所有的名字.
建立乙個包,也會發生三件事:
將該aaa包內 __init__py檔案載入到記憶體.
建立乙個以aaa命名的命名空間.
通過aaa. 的方式引用__init__的所有的名字.
包名就是 幕後指使的 init執行
aaa包與執行檔案同級的情況
引用aaa包的__init__中的name
import aaa
print(aaa.name)#因為執行aaa 其實就是執行__inint__中內容
# 我想要引用 aaa包的m1檔案的a變數
# 錯誤示例1:
import aaa
# 1. aaa的 __init__ 裡面 寫import m1
# 2. print(aaa.m1.a)
# print(aaa.m1.a)
# 報錯原因: no module named 'm1'
# 分析報錯原因: 模組找不到 記憶體,內建,sys.path三個地方找不到.
# m1 不在記憶體,不在內建,sys.path 會主動載入執行檔案(包的使用.py)的當前目錄. 而他不在
# 解決方式:
import aaa
# 1. 在執行檔案寫入 import aaa
# 2. aaa的 __init__ 裡面 寫 from aaa import m1#m1是要引入的檔名 aaa是包名
# 3. 然後在執行檔案 aaa.m1.a
# print(aaa.m1.a) 引用 aaa包的m1的a
# print(aaa.m1.func1())#引用 aaa包的m1的func1()
# 如何在當前檔案中,引用 aaa包的bbb包中__init__中 name.
# 1. 在執行檔案寫入 import aaa
# 2. aaa的 __init__ 裡面 寫 from aaa import bbb
# 3. 然後在執行檔案 print(aaa.bbb.name)
# 如何在當前檔案中,引用 aaa包的bbb包 a1.py檔案中的 name
# 1. 在執行檔案寫入 import aaa
# 2. 在aaa包的__init__ 寫上 from aaa import bbb (這樣寫 bbb包的__init__裡面所有的名字都能引用)
# 3. 在bbb包的__init__ 寫上 from aaa.bbb import mb
4 print(aaa.bbb.a1.name)
# 首先 無論從**引用模組,import 或者 from ... import ...
# 最開始的模組或者包名一定是記憶體,內建,sys.path中能找到的.(可參考bbb包中的 __init__)
# 直接import 為了讓我們會使用 包裡面的 __init__
# 第二類: 執行檔案 通過 from ... import... 匯入包以及包內的功能
# from ... import ...
# 通過這種方式不用設定__init__檔案
我想要引用 aaa包的__init__ name
from aaa import name
print(name)
我想要引用 aaa包的 a1 檔案中name
from aaa import a1
print(a1.name)
我想要引用 aaa包的 bbb包 __init__ name
from aaa.bbb import name
print(name)
我想要引用 aaa包的 bbb包 a1檔案的中的name
from aaa.bbb import a1
print(a1.name)
重點# from a.b.c import d
# c的. 的前面一定是包
# import 的後面一定是名字 可以是檔案, 並且不能 再有點 不能有點
# from aaa.bbb.m2.func1 import a # 錯誤的
# from aaa.bbb import m2
# m2.func1()
# from nb.m1 import f1,f2
# from nb.m2 import f3,f4
# from nb.m3 import f5,f6
# 目前為止,今天所看到的引用模組的方式都是絕對匯入
# 相對匯入: . .. ......
from .m1 import f1,f2
from .m2 import f3,f4
from .m3 import f5,f6
from .dsb.ly import f7
需求# 由於nb模組增加了很多很多功能,所以我們nb這個檔案就要劃整乙個包,
# 無論對nb模組有任何操作,對於使用者來說不應該改變,極少的改變對其的呼叫. 像裝飾器
第一版 檔案變成包了 包與執行檔案 在同一目錄
使用者 使用方式
# import nb
# nb.f1()
# nb.f2()
我們的解決方式 在aaa包的__init__ 加入
from nb.m1 import f1,f2#m1 中有f1 f2
from nb.m2 import f3,f4
from nb.m3 import f5,f6
第2版 包與 執行檔案 不在同一檔案 要想執行 必須在執行檔案 新增sys 路徑
import sys
第3版 模組改名
在__init__ 裡面改成相對匯入
from .m1 import f1,f2#當前目錄上一級
from .m2 import f3,f4
from .m3 import f5,f6
Lua初識之迭代器與閉包
一 迭代器與閉包 迭代器是一種支援指標型別的結構,它可以遍歷集合的每乙個元素 在lua中我們常常使用函式來描述迭代器,每次呼叫該函式就返回集 合的下乙個元素 寫乙個方法實現迭代 function list iter t local i 0 定義區域性變數 i local n table.getn t...
C 的webclient的使用總結與初識api
獲取 api 好長時間沒用c 了,關於webclient的使用幾乎忘得差不多了,於是我在網上查了它的使用。using system using system.net using system.io public class test 屬性 作用baseaddress 獲取或設定 webclient ...
Ajax的使用初識
對於ajax,是在script標籤內進行使用的。xhr就是瀏覽器的作用 開啟瀏覽器,輸入 或者後台處理檔案 後面傳遞引數 最後的布林值決定是否非同步操作,推薦true,否則會在send部分出現停留問題。預設也是true,可以不填 xhr.open get time.php?id 564 true 傳...