python學(xué)習(xí)筆記之調(diào)用eval函數(shù)出現(xiàn)invalid syntax錯(cuò)誤問題
pytho的使用和分發(fā)完全是免費(fèi)的,它是一種面向?qū)ο蟮恼Z言,它的。它的類模塊支持多態(tài),操作符重載和多重繼承等高級(jí)概念,并且以python特有的簡潔的語法和類型,OOP十分易于使用。python內(nèi)置了眾多預(yù)編譯并可移植的功能模塊,這些功能模塊叫做標(biāo)準(zhǔn)庫(standard library)。python可以調(diào)用C和C++的庫,可以被C和C++的程序調(diào)用,可以與java組件集成,可以和COM和.Net等框架進(jìn)行通信,并且可以通過SOAP、XML-RPC和CORBA等接口與網(wǎng)絡(luò)進(jìn)行交互,所以,python絕不僅僅是一個(gè)獨(dú)立的工具。
本來是想打算使用eval函數(shù)對(duì)變量進(jìn)行賦值的,沒想到出現(xiàn)了invalid syntax錯(cuò)誤。源代碼如下
In [2]: eval('a = 1') File "<string>", line 1 a = 1 ^ SyntaxError: invalid syntax
百度沒百度到結(jié)果,最后在stackoverflow上找到了好的答案.
作者的意思是,eval函數(shù)只負(fù)責(zé)對(duì)表達(dá)式進(jìn)行處理,并沒有賦值的功能,也就是說,eval函數(shù)只負(fù)責(zé)對(duì)你的輸入進(jìn)行輸出,True還是False又或者是什么東西。但它本身是沒有影響當(dāng)前代碼環(huán)境的能力的。如果我們想用來進(jìn)行賦值,那么應(yīng)該使用exec()函數(shù)??创a:
In [3]: exec('a = 1') In [4]: a Out[4]: 1
問題的解決方案已經(jīng)供出了,那么我們現(xiàn)在再看看官方文檔對(duì)這兩個(gè)函數(shù)怎么說。
eval(expression, global=None, local=None)
參數(shù)是字符串和可選的global和local。global應(yīng)當(dāng)為一個(gè)字典文件,local應(yīng)為一個(gè)映射對(duì)象。
expression參數(shù)將被處理為一個(gè)python的表達(dá)式(嚴(yán)格來說,是一串條件語句),global和local參數(shù)將被用來當(dāng)做全局和局部的命名空間。
exec(object[,global,[locals])
這個(gè)函數(shù)能夠?yàn)閜ython提供動(dòng)態(tài)的代碼執(zhí)行功能。
相關(guān)文章
Pycharm終端顯示PS而不顯示虛擬環(huán)境名的解決
這篇文章主要介紹了Pycharm終端顯示PS而不顯示虛擬環(huán)境名的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06使用Python爬蟲庫requests發(fā)送表單數(shù)據(jù)和JSON數(shù)據(jù)
今天再為大家介紹下使用Python爬蟲庫requests發(fā)送表單數(shù)據(jù)和JSON數(shù)據(jù)的方法,這是最基本的使用方法,大家可以參考測(cè)試下2020-01-01python利用插值法對(duì)折線進(jìn)行平滑曲線處理
這篇文章主要為大家詳細(xì)介紹了python利用插值法對(duì)折線進(jìn)行平滑曲線處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12Python實(shí)現(xiàn)暴力破解有密碼的zip文件的方法
這篇文章主要介紹了Python實(shí)現(xiàn)暴力破解有密碼的zip文件的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Python利用arcpy模塊實(shí)現(xiàn)柵格的創(chuàng)建與拼接
這篇文章主要為大家詳細(xì)介紹了如何基于Python語言arcpy模塊,實(shí)現(xiàn)柵格影像圖層建立與多幅遙感影像數(shù)據(jù)批量拼接(Mosaic)的操作,感興趣的可以了解一下2023-02-02