Python之第二十二天的努力--模組2,random模組
阿新 • • 發佈:2020-06-28
01 模組回顧
'''
自定義模組
'''
age = 10
def f1():
print('hello')
# 測試函式,在開發階段,對模組中的功能進行測試
def main():
print(age)
f1()
# 可以快速生成
if __name__ == '__main__':
main()
02 模組2
-
匯入模組的多種模式:
- import xxx :匯入一個模組的所有成員
- import aaa,bbb... : 一次性匯入多個模組的成員。不推薦這種寫法,分開寫。import os,sys
- from xxx import a : 從某個模組中匯入指定的成員。
- from xxx import a,b,c... : 從某個模組中匯入多個成員。
- from xxx import * : 從模組中匯入所有成員。
-
import xxx 和from xxx import * 的區別
-
第一種方式在使用其中成員時,必須使用模組名作為字首。不容易產生命名衝突。
# 使用import xxx 匯入 import my_module print(my_module.age)
-
第二種方式在使用其中成員時,不用使用模組名作為字首,直接使用成員名即可。但是容易產生命名衝突。在後定義的成員生效(把前邊的覆蓋了)
from my_module import age print(age)
-
-
怎麼解決名稱衝突的問題
- 改用 import xxx 這種方式匯入。
- 自己避免使用同名
- 使用別名解決衝突
-
使用別名:alias
-
給成員起別名,避免名稱衝突。
# 使用別名避免命名衝突 from my_module import age as a age = 1000 print(age) # 1000 print(a) # 10
-
給模組起別名,目的簡化書寫。
# 給模組起別名 import my_module as m print(m.age) # 10 m.f1() # hello
-
-
from xxx import * 控制成員被匯入
-
預設情況下,所有的成員都會被匯入。
__all__
是一個列表,用於表示本模組可以被外界使用的成員。元素是成員名的字串。# 使用__all__ 控制被匯入的成員 __all__ = ['age','age2'] age = 10 age2 = 20 age3 = 30
# 驗證__all__控制的成員 from my_module import * print(age) # 10 print(age2) # 20 print(age3) # 報錯
-
__all__
只是對 from xxx import * 這種匯入方式生效,其餘的方式都不生效。
-
-
相對匯入
-
針對某個專案中的不同模組之間進行匯入,稱為相對匯入。
-
只有一種模式:
from 相對路徑 import xxx
相對路徑:包含了點號的一個相對路徑。
. 表示的是當前路徑。
.. 表示的是父路徑。
... 表示的是父路徑的父路徑
-
# 相對匯入同一個專案下的模組 from ..z import zz # 容易向外界暴露zz模組 from ..z.zz import *0
-
03 常用模組:random
此模組提供了和隨機數獲取相關的方法:
- random.random() : 獲取 [0.0,1.0) 範圍內的浮點數
- random.randint(a,b) : 獲取[a,b]範圍內的一個整數
- random.uniform(a,b) : 獲取 [a,b) 範圍內的浮點數
- random.shuffle(x) : 把引數指定的資料中的元素打亂。引數必須是一個可變的資料型別。
- random.sample(x,k) : 從x中隨機抽取k個數據,組成一個列表返回。
import random
# 獲取 [0.0,1.0) 範圍內的浮點數
print(random.random())
# 獲取 [a,b) 範圍內的浮點數
print(random.uniform(3,5))
# 獲取[a,b]範圍內的一個整數
print(random.randint(3,5))
# 把引數指定的資料中的元素打亂。引數必須是一個可變的資料型別。
lst = list(range(10))
random.shuffle(lst)
print(lst)
# 從x中隨機抽取k個數據,組成一個列表返回。
t = (1,2,3)
t1 = random.sample(t,len(t))
print(t1)