python筆記-調用eval函數出現invalid syntax錯誤


  本來是想打算使用eval函數對變量進行賦值的,沒想到出現了invalid syntax錯誤。源代碼如下

 

In [2]: eval('a = 1')
  File "<string>", line 1
    a = 1
      ^
SyntaxError: invalid syntax

 

  百度沒百度到結果,最后在stackoverflow上找到了好的答案,這里是原文鏈接

  作者的意思是,eval函數只負責對表達式進行處理,並沒有賦值的功能,也就是說,eval函數只負責對你的輸入進行輸出,True還是False又或者是什么東西。但它本身是沒有影響當前代碼環境的能力的。如果我們想用來進行賦值,那么應該使用exec()函數。看代碼:

 

In [3]: exec('a = 1')

In [4]: a
Out[4]: 1

 

  問題的解決方案已經供出了,那么我們現在再看看官方文檔對這兩個函數怎么說。

eval(expression, global=None, local=None)

      參數是字符串和可選的global和local。global應當為一個字典文件,local應為一個映射對象。

  expression參數將被處理為一個python的表達式(嚴格來說,是一串條件語句),global和local參數將被用來當做全局和局部的命名空間。

exec(object[,global,[locals])

  這個函數能夠為python提供動態的代碼執行功能。

 

  看,官方對其功能的描述都是這么的不一樣,有興趣的同學可以去看更詳細的文檔~更詳細的點這里


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM