1. 程式人生 > 實用技巧 >Python之第二十二天的努力--模組2,random模組

Python之第二十二天的努力--模組2,random模組

01 模組回顧

'''
自定義模組
'''

age = 10

def f1():
    print('hello')


# 測試函式,在開發階段,對模組中的功能進行測試
def main():
    print(age)
    f1()



# 可以快速生成
if __name__ == '__main__':
    main()

02 模組2

  1. 匯入模組的多種模式:

    • import xxx :匯入一個模組的所有成員
    • import aaa,bbb... : 一次性匯入多個模組的成員。不推薦這種寫法,分開寫。import os,sys
    • from xxx import a : 從某個模組中匯入指定的成員。
    • from xxx import a,b,c... : 從某個模組中匯入多個成員。
    • from xxx import * : 從模組中匯入所有成員。
  2. import xxx 和from xxx import * 的區別

    • 第一種方式在使用其中成員時,必須使用模組名作為字首。不容易產生命名衝突。

      # 使用import xxx 匯入
      import my_module
      print(my_module.age)
      
    • 第二種方式在使用其中成員時,不用使用模組名作為字首,直接使用成員名即可。但是容易產生命名衝突。在後定義的成員生效(把前邊的覆蓋了)

      from my_module import age
      print(age)
      
  3. 怎麼解決名稱衝突的問題

    • 改用 import xxx 這種方式匯入。
    • 自己避免使用同名
    • 使用別名解決衝突
  4. 使用別名: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
      
  5. 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 * 這種匯入方式生效,其餘的方式都不生效。

  6. 相對匯入

    • 針對某個專案中的不同模組之間進行匯入,稱為相對匯入。

    • 只有一種模式:

      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)