Python常用庫函數

eval函數

eval是Python的一個內置函數,這個函數的作用是,返回傳入字符串的表達式的結果。想象一下變量賦值時,將等號右邊的表達式寫成字符串的格式,將這個字符串作爲eval的參數,eval的返回值就是這個表達式的結果。

eval的語法格式如下:

eval(expression[, globals[, locals]])
  • expression : 字符串
  • globals : 變量作用域,全局命名空間,如果被提供,則必須是一個字典對象。
  • locals : 變量作用域,局部命名空間,如果被提供,可以是任何映射對象。

傳遞globals參數值爲{“age”:1822}

print(eval("{'name':'linux','age':age}",{"age":1822}))
//{'name': 'linux', 'age': 1822}

再加上locals變量

age=18
print(eval("{'name':'linux','age':age}",{"age":1822},locals()))
// {'name': 'linux', 'age': 18}

可以看到當locals參數爲空,globals參數不爲空時,查找globals參數中是否存在變量,並計算。

當兩個參數都不爲空時,先查找locals參數,再查找globals參數,locals參數中同名變量會覆蓋globals中的變量。

eval函數實現list、dict、tuple與str之間的轉化

  1. 字符串轉換成列表
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
print(type(a))  // <class 'str'>
b = eval(a) 
print(type(b)) //  <class 'list'>
print(b)      //  [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
  1. 字符串轉換成字典
a="{1:'a',2:'b'}"
print(type(a)) //<class 'str'>
b=eval(a)
print(type(b))// <class 'dict'>
print(b)      // {1: 'a', 2: 'b'}
  1. 字符串轉換成元組
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
print(type(a))  // <class 'str'>
b=eval(a)
print(type(b))  //<class 'tuple'>
print(b)       //([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))

pow(x,y)函數

pow(x,y):計算xyx^y,想算多大算多大

round(x,d)函數

round(x,d):對x四捨五入,d是小數截取位數
作用:浮點數間運算及比較用round()函數輔助,因爲浮點數間運算存在不確定尾數

字符串操作函數

方法及使用 描述
chr(u):u爲Unicode編碼,返回其對應的字符 print(chr(255))結果是ÿ
ord(x):x爲字符,返回其對應的Unicode編碼 print(ord(‘c’))結果是99
len(x):返回x(字符、列表、元組等)長度或項目個數 print(len((1,2,3,4)))結果爲4
str(x):返回一個對象的string格式 dict = {‘runoob’: ‘runoob.com’, ‘google’: ‘google.com’} print(str(dict))結果爲{‘runoob’: ‘runoob.com’, ‘google’: ‘google.com’}
hex(x):x爲10進制整數,hex() 函數用於將10進制整數轉換成16進制,以字符串形式表示。 hex(255)結果爲0xff
oct(x):將一個整數轉換成8進制字符串 oct(255)結果爲0o377

字符串處理方法

方法及使用 描述
str.lower()或str.upper() 返回字符串的副本,全部字符小寫/大寫 “AbCdEfGh”.lower()結果爲“abcdefgh”
str.split(sep=None) 返回一個列表,由str根據sep被分隔的部分組成 “A,B,C”.split(",")結果爲[‘A’,‘B’,‘C’]
str.count(sub) 返回子串sub在str中出現的次數 “an apple a day”.count(a)結果爲4
str.replace(old,new) 返回字符串str副本,所有old子串被替換爲new “python”.replace(“n”,“n123.io”)結果爲“pytho123.io”
str.center(width[,fillchar]) 字符串str根據寬度width居中,fillchar可選 “python”.center(20,"=")結果爲‘=======python=======’
str.strip(chars) 從str中去掉在其左側和右側chars中列出的字符 “= python= ”.strip(" =np")結果爲"ytho"
str.join(iter) 在iter變量除最後一個元素外每個元素後增加一個str “,”.join(“123456”)結果爲“1,2,3,4,5” #主要用於字符串分隔等

time庫函數

時間獲取

函數 描述
time() 獲取當前時間戳,即計算機內部時間值,浮點數 。time.time()結果爲1576661636.3347044
ctime() 獲取當前時間並以易讀方式表示,返回字符串 。time.ctime()結果爲 Wed Dec 18 17:37:27 2019
gmtime() 獲取當前時間,表示爲計算機可處理的時間格式 。 time.gmtime()結果爲time.struct_time(tm_year=2019, tm_mon=12, tm_mday=18, tm_hour=9, tm_min=39, tm_sec=23, tm_wday=2, tm_yday=352, tm_isdst=0)

時間格式化

函數 描述
strftime(tpl,ts) tpl是格式化模板字符串,用來定義輸出效果,ts是計算機內部時間類型變量 t=time.gmtime() print(time.strftime("%Y-%m-%d %H:%M:%S",t))結果是2019-12-18 09:44:15
strptime(str,tpl) str是字符串形式的時間值,tpl是格式化模板字符串,用來定義輸入效果。 timestr=‘2019-12-18 09:45:20’ print(time.strptime(timestr,"%Y-%m-%d %H:%M:%S"))結果爲 time.struct_time(tm_year=2019, tm_mon=12, tm_mday=18, tm_hour=9, tm_min=45, tm_sec=20, tm_wday=2, tm_yday=352, tm_isdst=-1)
格式化字符串 日期/時間說明 值範圍和實例
%Y 年份 0000~9999,例如:1900
%m 月份 01-12,例如:10
%B 月份名稱 January~December,例如:April
%b 月份名稱縮寫 Jan~Dec,例如:Apr
%d 日期 01~31,例如:25
%A 星期 Monday~Sunday,例如:Wednesday
%a 星期縮寫 Mon~Sun,例如:Wed
%H 小時(24h制) 00~23,例如:12
%I 小時(12h制) 01~12,例如:7
%p 上/下午 AM,PM 例如:PM
%M 分鐘 00~59,例如:26
%S 00~59,例如:26

程序計時

函數 描述
perf_counter() 返回一個CPU級別的精確時間計數值,單位爲秒。由於這個計數值起點不確定,連續調用差值纔有意義start=time.perf_counter() print(start) end=time.perf_counter() print(end) print(end-start) 結果爲0.0224495 0.0225381 8.859999999999771e-05
sleep(s) s擬休眠的時間,單位是秒,可以是浮點數。def wait(): time.sleep(3.3) wait()#程序將等待3.3秒後退出

random庫

  • 僞隨機數:採用梅森旋轉算法生成的(僞)隨機序列中元素
  • random庫主要用於生成隨機數
    -使用random庫 :import random

基本隨機數函數

  • 隨機數種子確定了隨機數序列的產生。
  • 如果不給種子,默認的種子是當前第一次調用random所對應的系統時間
  • 只要種子相同,每次產生的隨機數就是相同的
  • 如果程序需要再現隨機過程,就設置隨機種子
  • 如果只是用隨機數,不關心程序復現結果,可以不設定種子
函數 描述
seed(a=None) 初始化給定的隨機數種子,默認爲當前系統時間 random.seed(1) #產生種子1對應的隨機序列
random() 生成一個[0.0,1.0)之間的隨機小數 random.random()

擴展隨機數函數

函數 描述
randint(a,b) 生成一個[a,b]之間的整數 random.randint(10,20) # 20
randrange(m,n[,k]) 生成一個[m,n)之間以k爲步長的隨機整數 random.randrange(10,100,10) #70
getrandbits(k) 生成一個k比特長的隨機整數 random.getrandbits(16) #15505
uniform(a,b) 生成一個[a,b]之間的隨機小數 random.uniform(10,100) # 47.21093237790465
choice(seq) 從序列seq中隨機選擇一個元素 random.choice([1,2,3,4,5,6]) # 3
shuffle(seq) 將序列seq中元素隨機排列,返回打亂後的序列 s=[1,2,3,4,5];random.shuffle(s);print(s) # [5, 4, 2, 3, 1]

lambda函數

lambda函數返回函數名作爲結果

  • lambda函數是一種匿名函數,即沒有名字的函數
  • 使用lambda保留字定義,函數名是返回結果
  • lambda函數用於定義簡單的、能夠在一行內表示的函數

定義:<函數名>=lambda<參數>:<表達式>

舉例:

f=lambda x,y:x+y
print(f(10,15)) #25

f=lambda :"lambda函數"  #無參數的函數
print(f())

謹慎使用lambda函數

  • lambda函數主要用作一些特定函數或方法的參數
  • lambda函數有一些固定使用方式
  • 一般情況下,建議使用def定義的普通函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章