ev
al(str [,globals [,locals ]]) -- 函式將字串str當成有效python表示式來求值,並返回計算結果。
例 : eval('3+4') ==> 7
>>> a = 1>>> b = eval("a"
)>>>id(a)
505910960
>>>id(b)
505910960
>>> b = 1000
>>>id(b)
16834704
>>>a
1
這裡牽涉到乙個概念:python的賦值是只是把變數的記憶體位址賦值給另乙個變數,這一點可以使用python的內建方法id()來進行測試
我們假設'qh'這個字串在記憶體中的位址是a,'ljq'在記憶體中的位址是byou='qh' #讓you變數指向a位址
me=you #讓me變數和you變數一樣指向a位址
you='ljq' #修改you變數,讓它指向到b位址
print you #可想而知you指向的是b位址,所以它的值為'ljq'
print me #me指向的是a位址,所以它的值為'qh'
輸出:ljq
qh
classfoo:
val = 1foo =foo()
(foo.val)
==> 1
(foo)
==> <__main__.foo object at 0x010153d0>eval_foo = eval("
foo"
(eval_foo)
==> <__main__.foo object at 0x010153d0>eval_foo.val = 1000
(foo.val)
==> 1000
eval_foo = eval("foo") 將foo物件的位址傳遞給eval_foo
相當於獲得了乙個引用,所以foo和eval_foo指向的是同乙個物件,當然屬性是一樣的,乙個改變另乙個也會改變.
若新增 eval_foo = foo() 將建立乙個實體物件,記憶體的位址將與foo的記憶體位址不同
ps:如果不想獲得乙個引用 那麼我們就要用到拷貝,包括淺拷貝(copy模組的copy函式)和深拷貝(copy模組中的deepcopy函式)
函式說明python函式巢狀筆記 函式說明
ps 今天上午,非常鬱悶,有很多簡單基礎的問題搞得我有些迷茫,哎,幾天不寫就忘。目前又不當coo,還是得用心記 哦!關於函式內嵌函式作用域的條記 def test i 0defa print locals a printi test 這段,locals 的值為空,說明內嵌的a函式沒有認默引入i de...
CFile Open函式說明
1 nopenflags cfile modecreate 建立乙個新的檔案,如果檔案存在將檔案擷取成長度為0。cfile modenotruncate 此標誌總是與modecreate 配合使用,如果檔案存在,不將檔案擷取成長度為0 如果檔案不存在即建立新檔案。這個功能往往很好用,比如說,當你需要...
signal函式說明
c traps and pitfalls 對signal函式解釋得非常詳細。中void signal int sig,void handler int int int p 這是乙個函式指標,p所指向的函式是乙個不帶任何引數,並且返回值為int的乙個函式.int fun 這個式子與上面式子的區別在於用...