文章目錄
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之間的轉化
- 字符串轉換成列表
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]]
- 字符串轉換成字典
a="{1:'a',2:'b'}"
print(type(a)) //<class 'str'>
b=eval(a)
print(type(b))// <class 'dict'>
print(b) // {1: 'a', 2: 'b'}
- 字符串轉換成元組
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):計算,想算多大算多大
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
定義的普通函數