Python基礎:常用系統模組

過去※發表於2020-10-10


Python 的標準庫包含許多模組,每個模組定義了很多有用的函式,這些函式稱為系統函式

模組的匯入

方法一

格式:import 模組名

該語句將模組中定義的函式程式碼複製到自己的程式中,然後就可以訪問改模組中的任何函式,方式是 模組名.函式名

例:

import math
print(math.sqrt(2)) # 輸出1.4142135623730951

方法二

from 模組名 import 函式名

從模組中匯入指定函式,呼叫模組中函式時,不需要加上模組名。匯入多個模組時用逗號分隔,匯入全部模組時函式名用 * 代替

from math import sqrt,pow
print(sqrt(2)) # 輸出1.4142135623730951
print(pow(2,3)) # 輸出8.0

math 模組

功能:處理數學相關運算,其中定義的常用數學常量和函式如下

數學常量

符號意義
e返回常數e(自然對數的底)
pi返回圓周率π
import math
print(math.e)
print(math.pi)
# 輸出
# 2.718281828459045
# 3.141592653589793

絕對值和平方根函式

函式名功能
fabs(x)返回x的絕對值(浮點型)
sqrt(x)返回x的平方根(x>0) 返回值浮點型
import math
print(math.fabs(-6))  # 輸出 6.0
print(math.sqrt(9))   # 輸出 3.0

冪函式和對數函式

函式名功能
pow(x,y)返回x的y次冪(浮點型)
exp(x)返回e(自然對數的底)的x次冪
log(x[,base])返回x的自然對數,base為可選引數修改對數的底,預設為e
log10(x)返回x的常用對數(浮點型)
import math
print(math.pow(2,3))
print(math.exp(2))
print(math.log(math.e))
print(math.log(10,10))
print(math.log10(10))
# 輸出:
# 8.0
# 7.38905609893065
# 1.0
# 1.0
# 1.0

取整和求餘函式

函式名功能
ceil(x)對x向上取整
floor(x)對x向下取整
fmod(x,y)返回x/y的餘數(浮點型)
import math
print(math.ceil(4.4))  #輸出5
print(math.floor(4.4)) #輸出4
print(math.fmod(8,4))  #輸出0.0

弧度角度轉換函式

函式名功能
degress(x)將弧度轉換為角度
import math
print(math.degrees(math.pi)) 輸出180.0

三角函式和反三角函式

函式名功能
sin(x)返回x的正弦值(x為弧度)
cos(x)返回x的餘弦值(x為弧度)
tan(x)返回x的正切值(x為弧度)
asin(x)返回x的反正弦值(返回值為弧度)
acos(x)返回x的反餘弦值(返回值為弧度)
atan(x)返回x的反正切值(返回值為弧度)
import math
print(math.sin(math.pi / 2)) # 輸出1.0
print(math.cos(math.pi / 2)) # 輸出6.123233995736766e-17 相當於 0
print(math.tan(math.pi / 4)) # 輸出0.9999999999999999 相當於 1

print(math.asin(1))# 輸出1.5707963267948966
print(math.acos(-1))# 輸出3.141592653589793
print(math.atan(1))# 輸出0.7853981633974483

cmath模組

cmath模組函式與math模組函式基本一致。只是math模組支援對實數運算進行支援,cmath模組對複數運算進行支援

import cmath
print(cmath.pi)
print(cmath.sqrt(-1))
print(cmath.sin(1))
print(cmath.log10(100))
print(cmath.exp(100+10j))
# 輸出
# 3.141592653589793
# 1j
# (0.8414709848078965+0j)
# (2+0j)
# (-2.255522560520288e+43-1.4623924736915717e+43j)

複數特有函式

phase(x)函式
  • 功能:返回複數x的幅角
  • 示例
from cmath import phase
print(phase(1+1j)) #輸出0.7853981633974483
polar()函式和rect()函式

polar()函式

  • 功能:將複數的笛卡爾座標轉換為極座標表示,輸出一個二元組(r,p),r複數的模,即abs(x),p為幅角,即p=phase(x),

rect(r,p)函式

  • 將複數的極座標表示轉換為笛卡爾座標表示,
  • 輸出r * cos( p )+r *sin( p )*1 j

示例:

from cmath import polar,rect
n = 3 + 4j
r,p = polar(n)
print(r,p)
print(rect(r,p))
# 輸出5
# .0 0.9272952180016122
# (3.0000000000000004+3.9999999999999996j)

random模組

seed(x) 函式

  • 設定隨機數生成器種子,通常在呼叫其他隨機模組之前呼叫此函式
  • 相同的種子,每次呼叫隨機函式生成的隨機數是相同的。預設將系統時間作為種子值

隨機挑選和排序choice(seq)、sample(seq,k)、shuffle(seq)

choice(seq)函式:
  • 功能:從序列(列表,字串,元組)中隨機挑選一個元素
sample(seq,k)函式:
  • 功能:從序列中隨機挑選k個元素
shuffle(seq)函式

功能: 將序列的所有元素隨機排序

from random import *
n = list(range(0,10))  #range()函式 生成一個可迭代物件,list()函式生成一個列表
print(choice(n))
print(sample(n,5))
print(n)
shuffle(n) #該函式反回值 None
print(n)
# 輸出:
# 9
# [2, 7, 5, 8, 6]
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# [0, 9, 4, 5, 8, 2, 3, 7, 6, 1]

生成隨機數

生成的隨機數符合均勻分佈,意味著某個範圍內的數字出現的概率相等

random()函式
  • 功能:隨機生成一個[0,1) 範圍的實數
uniform(a,b)函式
  • 功能:隨機生成一個[a,b] 範圍的實數
randrange(a,b,c)函式
  • 功能:隨機生成一個[a,b)範圍內以c遞增的整數,省略c時,預設為1,省略a時初值為0。
randint(a,b) 函式
  • 功能:隨機生成一個[a,b]範圍內的整數
import random
i = 1
# random.seed(1)  隨機數種子相同,產生的隨機是每次都一樣
while i <= 2:
    n = random.random()
    print(n)
    i += 1
# 其他就不演示了

i = 1
while i <= 10:
    n = int(random.random()*10) + 2 # 產生一個[2,12)的整數,所以其他可以隨機函式感覺作用不打
    print(n)
    i += 1

time模組

time()函式

  • 功能:返回當前時間的時間戳,時間戳是從Epoch 1970年1月1日00:00:00 UTC開始經過的秒數

localtime([secs])

  • 功能:接收Epoch開始的秒數,並返回一個時間元組。時間元組包含9個元素
from time import *
print(localtime())
# 輸出:time.struct_time(tm_year=2020, tm_mon=9, tm_mday=20, tm_hour=23, tm_min=15, tm_sec=49, tm_wday=6, tm_yday=264, tm_isdst=0)

asctime([tupletime])

  • 功能:接收一個時間元組,返回一個日期字串。時間元組省略時,返回當前系統日期和時間
import time
print(time.asctime())
print(time.asctime(time.localtime(time.time())))

# 輸出:
# Fri Oct  9 22:27:52 2020
# Fri Oct  9 22:27:52 2020

ctime([secs])

  • 功能:類似於asctime(localtime([secs])),不帶引數時與asctime()功能相同
from time import ctime
print(ctime())
# 輸出:Fri Oct  9 22:33:16 2020

strftime(日期格式)

  • 功能: 按指定的日期格式返回當前日期
import time
print(time.strftime('%Y-%m-%d %H:%M:%S'))
# 輸出2020-10-09 22:38:00
時間日期格式化符號
符號意義
%y(小寫)表示兩位數的年份(00~~99)
%Y(大寫)表示四位數的年份(000~~9999)
%m(小寫)表示月份(01~~12)
%d(小寫)表示月份中的某一天(0~~31)
%H(大寫)表示24小時制(0~~23)
%I(大寫)表示12小時制(01~~12)
%M(大寫)表示分鐘(00~~59)
%S(大寫)表示秒(00~~59)

calendar:日曆

預設情況下,日曆把星期一作為一週的第一天,星期日作為最後一天。

setfirstweekday(weekday)

  • 功能:設定每個日期的開始工作日程式碼,星期程式碼是0~6,星期一代表0

firstweekday()

  • 功能:返回當前設定的每個星期開始工作日。預設為0,代表星期一

isleap(year)

  • 功能:如果指定的年分是閏年返回True,否則返回False

leapdays(a,b)

  • 功能:返回在[a,b)範圍內的閏年數

calendar(year)

  • 功能:返回指定年份的日曆。
import calendar
cal = calendar.calendar(2020)
print(cal)
# 輸出:                                  2020
# 
#       January                   February                   March
# Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
#        1  2  3  4  5                      1  2                         1
#  6  7  8  9 10 11 12       3  4  5  6  7  8  9       2  3  4  5  6  7  8
# 13 14 15 16 17 18 19      10 11 12 13 14 15 16       9 10 11 12 13 14 15
# 20 21 22 23 24 25 26      17 18 19 20 21 22 23      16 17 18 19 20 21 22
# 27 28 29 30 31            24 25 26 27 28 29         23 24 25 26 27 28 29
#                                                     30 31
# 
#        April                      May                       June
# Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
#        1  2  3  4  5                   1  2  3       1  2  3  4  5  6  7
#  6  7  8  9 10 11 12       4  5  6  7  8  9 10       8  9 10 11 12 13 14
# 13 14 15 16 17 18 19      11 12 13 14 15 16 17      15 16 17 18 19 20 21
# 20 21 22 23 24 25 26      18 19 20 21 22 23 24      22 23 24 25 26 27 28
# 27 28 29 30               25 26 27 28 29 30 31      29 30
# 
#         July                     August                  September
# Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
#        1  2  3  4  5                      1  2          1  2  3  4  5  6
#  6  7  8  9 10 11 12       3  4  5  6  7  8  9       7  8  9 10 11 12 13
# 13 14 15 16 17 18 19      10 11 12 13 14 15 16      14 15 16 17 18 19 20
# 20 21 22 23 24 25 26      17 18 19 20 21 22 23      21 22 23 24 25 26 27
# 27 28 29 30 31            24 25 26 27 28 29 30      28 29 30
#                           31
# 
#       October                   November                  December
# Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
#           1  2  3  4                         1          1  2  3  4  5  6
#  5  6  7  8  9 10 11       2  3  4  5  6  7  8       7  8  9 10 11 12 13
# 12 13 14 15 16 17 18       9 10 11 12 13 14 15      14 15 16 17 18 19 20
# 19 20 21 22 23 24 25      16 17 18 19 20 21 22      21 22 23 24 25 26 27
# 26 27 28 29 30 31         23 24 25 26 27 28 29      28 29 30 31
#                           30

month(year,month)

  • 功能:返回指定年份的日曆

monthcalendar(year,month)

  • 功能:返回一個整數列表,每個子列表表示一個星期(從星期一到星期日)

monthrang(year,month)

  • 功能:返回兩個整數,第一個代表指定年和月的第一天是星期幾。第二個代表所指月份的天數。
from calendar import *

cal = month(2020,1)
print(cal)

cal = monthcalendar(2020,1)
print(cal)

print(monthrange(2020,1))
# 輸出:   January 2020
# Mo Tu We Th Fr Sa Su
#        1  2  3  4  5
#  6  7  8  9 10 11 12
# 13 14 15 16 17 18 19
# 20 21 22 23 24 25 26
# 27 28 29 30 31
# 
# [[0, 0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26], [27, 28, 29, 30, 31, 0, 0]]
# (2, 31)

相關文章