[React] Handle Recoil Asynchronous Selectors using Loadables in React
阿新 • • 發佈:2020-09-13
模組
1.1 匯入模組
1.1.1 匯入模組的方式
- import 模組名
- from 模組名 import 功能名
- from 模組名 import *
- import 模組名 as 別名
- from 模組名 import 功能名 as 別名
1.1.2 匯入方式詳解
1.1.2.1 import
- 語法:
# 1. 導⼊入模組
import 模組名
import 模組名1, 模組名2...
# 2. 調⽤用功能
模組名.功能名()
- 示例
import math
print(math.sqrt(9)) # 3.0
1.1.2.2 from..import..
- 語法
from 模組名 import 功能1, 功能2, 功能3...
- 體驗
from math import sqrt
print(sqrt(9))
1.1.2.3 from .. import *
- 語法
from 模組名 import *
- 體驗
from math import *
print(sqrt(9))
1.1.2.4 as定義別名
- 語法
# 模組定義別名
import 模組名 as 別名
# 功能定義別名
from 模組名 import 功能 as 別名
- 體驗
# 模組別名 import time as tt tt.sleep(2) print('hello') # 功能別名 from time import sleep as sl sl(2) print('hello')
1.2. 製作模組
在Python中,每個Python檔案都可以作為一個模組,模組的名字就是檔案的名字。也就是說自定義模組名必須要符合識別符號命名規則。
1.2.1 定義模組
新建一個Python檔案,命名為 my_module1.py ,並定義 testA 函式。
def testA(a, b):
print(a + b)
1.2.2 測試模組
在實際開中,當一個開發人員編寫完一個模組後,為了讓模組能夠在專案中達到想要的效果,這個開發人員會自行在py檔案中新增一些測試資訊.,例如,在 my_module1.py 檔案中新增測試程式碼。
def testA(a, b): print(a + b) testA(1, 1)
此時,⽆無論是當前檔案,還是其他已經匯入了該模組的檔案,在運行的時候都會自動執行 testA 函式的呼叫。
解決辦法如下:
def testA(a, b):
print(a + b)
# 只在當前⽂檔案中調⽤用該函式,其他導⼊入的⽂檔案內不不符合該條件,則不不執⾏行行testA函式調⽤用
if __name__ == '__main__':
testA(1, 1)
1.2.3 呼叫模組
import my_module1
my_module1.testA(1, 1)
1.2.4 注意事項
如果使用 from .. import .. 或 from .. import * 匯入多個模組的時候,且模組內有同名功能。當呼叫這個同名功能的時候,呼叫到的是後面匯入的模組的功能。
- 示例
# 模組1程式碼
def my_test(a, b):
print(a + b)
# 模組2程式碼
def my_test(a, b):
print(a - b)
# 導⼊入模組和調⽤用功能程式碼
from my_module1 import my_test
from my_module2 import my_test
# my_test函式是模組2中的函式
my_test(1, 1)
1.3 __ name __ 屬性
一個模組被另一個程式第一次引入時,其主程式將執行。如果我們想在模組被引入時,模組中的某一程式塊不執行,我們可以用__ name __ 屬性來使該程式塊僅在該模組自身執行時執行。否則,如果沒有 __ name__ , 則匯入模組是,馬上就運行了模組內的函式。
if __name__ == '__main__':
# 執行該檔案內需要執行的函式
print('程式自身在執行')
1.4 dir()函式
dir() 函式一個排好序的字串列表,內容是一個模組裡定義過的名字。
返回的列表容納了在一個模組裡定義的所有模組,變數和函式。
如果沒有給定引數,那麼 dir() 函式會羅列出當前定義的所有名稱:
import math
print(dir(math))