python學習筆記之調用eval函數出現invalid syntax錯誤問題

來源:互聯網
上載者:User
pytho的使用和分發完全是免費的,它是一種物件導向的語言,它的。它的類別模組支援多態,操作符重載和多重繼承等進階概念,並且以python特有的簡潔的文法和類型,OOP十分便於使用。python內建了眾多先行編譯並可移植的功能模組,這些功能模組叫做標準庫(standard library)。python可以調用C和C++的庫,可以被C和C++的程式調用,可以與java組件整合,可以和COM和.Net等架構進行通訊,並且可以通過SOAP、XML-RPC和CORBA等介面與網路進行互動,所以,python絕不僅僅是一個獨立的工具。

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

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

  百度沒百度到結果,最後在stackoverflow上找到了好的答案.

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

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

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

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

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

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

exec(object[,global,[locals])

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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.