1.eval()函式:
eval是單詞evaluate的縮寫,就是:求...的值的意思。eval()函式的作用是把str轉換成list,dict,tuple.
li_1='[1,2,3]'
print(eval(li_1))
di_1=""
print(eval(di_1))
tu_1='(2,4,6)'
print(eval(tu_1))'''執行結果:
[1, 2, 3]
(2, 4, 6)'''
view code
python中有很多內建的很有用的工具函式,熟練地使用這些小工具絕對可以幫助你在工作中達到事半功倍的效果,今天由於需要用到了eval()函式,這個函式其實之前就用過了但是由於最近一直忙於看**和方向上的一些其他的事,這個東西也就慢慢忘掉了,今天要用,索性直接再學一下,這裡就作為是學習的記錄了。(
eval()官方文件裡面給出來的功能解釋是:將字串string物件轉化為有效的表示式參與求值運算返回計算結果
語法上:呼叫的是:eval(expression,globals=none, locals=none)返回的是計算結果
其中:expression是乙個參與計算的python表示式
globals是可選的引數,如果設定屬性不為none的話,就必須是dictionary物件了
locals也是乙個可選的物件,如果設定屬性不為none的話,可以是任何map物件了
python是用命名空間來記錄變數的軌跡的,命名空間是乙個dictionary,鍵是變數名,值是變數值。
當一行**要使用變數 x 的值時,python 會到所有可用的名字空間去查詢變數,按照如下順序:
1)區域性名字空間 - 特指當前函式或類的方法。如果函式定義了乙個區域性變數 x, 或乙個引數 x,python 將使用它,然後停止搜尋。
2)全域性名字空間 - 特指當前的模組。如果模組定義了乙個名為 x 的變數,函式或類,python 將使用它然後停止搜尋。
3)內建名字空間 - 對每個模組都是全域性的。作為最後的嘗試,python 將假設 x 是內建函式或變數。
python的全域性名字空間儲存在乙個叫globals()的dict物件中;區域性名字空間儲存在乙個叫locals()的dict物件中。我們可以用print (locals())來檢視該函式體內的所有變數名和變數值。
下面簡單演示一下eval()函式的使用:
importmathdefeval_test():
l= '[1,2,3,4,[5,6,7,8,9]]'d= ""t= '([1,3,5],[5,6,7,8,9],[123,456,789])'
print('--------********---------轉化開始-----------********---------')print(type(l), type(eval(l)))print(type(d), type(eval(d)))print(type(t), type(eval(t)))print(locals())if __name__ == "__main__":
eval_test()'''the running result:
--------********---------轉化開始-----------********---------
", 'l': '[1,2,3,4,[5,6,7,8,9]]'}'''
view code
上面簡單演示的是eval在字串物件和list、dictinoary、tuple物件之間的轉換作用
眾所周知:eval()的確是乙個很便捷的工具,但是便捷使用不當的同時也會造成嚴重的安全問題。
2.淺拷貝與深拷貝:
淺拷貝是只拷貝父物件,深拷貝是父物件子物件一塊拷貝。就像轉殖乙隻羊d,淺拷貝是只轉殖d,深拷貝是轉殖了d,d的孩子也一併被轉殖。
淺拷貝:
importcopy
a=[1,2,[3,4]]print('a的引用:',id(a))deftest(m):print('m的引用:', id(m))print(m)
b=copy.copy(m)
test(a)'''a的引用: 43269128
m的引用: 43269128
[1, 2, [3, 4]]
[1, 2, [3, 4, 'hi']]
[1, 2, [3, 4, 'hi'], 50]'''
view code
深拷貝:
importcopy
a=[10,20,[5,6]]print('a的引用:',id(a))deftest(m):print('m的引用:', id(m))print(m)
b=copy.deepcopy(m)
test(a)'''a的引用: 43531272
m的引用: 43531272
[10, 20, [5, 6]]
[10, 20, [5, 6]]
[10, 20, [5, 6, 7], 30]'''
view code
Python學習筆記 1 1 2 認識Python
一.課程目標 二.詳情解讀 1.初識pythonpython語言是一種高階程式語言,它於1991年由吉多.範羅蘇姆 guido van rossum 發明。目前主要應用於web開發 gui開發 網路爬蟲 資料科學 人工智慧等領域。python官方 python語言也是一種多正規化程式語言,即物件導向...
Python學習筆記 一手漂亮的Python函式
使用類和函式定義模型 函式是抽象和封裝的基本方法之一 重構函式 命名合理 具有單一功能 包含文件注釋 返回乙個值 不超過 50 行 冪等函式,盡可能是純函式 函式太長 重構 refactor 冪等函式 idempotent function 可測試性 可維護性 在函式程式設計中,如果函式是冪等函式且...
python起步變數教學
使用方法修改字串的大小寫 message welcome 之間是字串 print message message abc print message name yu wenfei print name.title title是首字母大寫 name yu wenfei print name.upper...