电竞比分网-中国电竞赛事及体育赛事平台

分享

python基礎(chǔ)第十三課--超級(jí)好用的eval函數(shù)(小白piao分享)

 印度阿三17 2020-03-01

eval()函數(shù)

1.函數(shù)原型:

eval(expression[,globals[,locals]])

expression----表達(dá)式
globals----變量作用域,全局命名空間,如果被提供,則必須是一個(gè)字典對(duì)象
locals----變量作用域,局部命名空間,如果被提供,可以是任何映射對(duì)象。
返回值----返回表達(dá)式計(jì)算結(jié)果

2.實(shí)例:

>>>x = 7
>>> eval( '3 * x' )
21
>>> eval('pow(2,2)')
4
>>> eval('2   2')
4
>>> n=81
>>> eval("n   4")
85

3.命名空間

          python是用命名空間來記錄變量的運(yùn)行狀態(tài)的,命名空間是一個(gè)dictionary型的對(duì)象,鍵是變量名,值是變量值。

        在任何一個(gè)python的程序當(dāng)中,都存在多個(gè)命名空間。

        每個(gè)函數(shù)都有著自已的命名空間,叫做局部空間,它記錄了函數(shù)的變量,包括函數(shù)的參數(shù)和局部定義的變量。

        每個(gè)模塊擁有它自已的命名空間,叫做全局空間,它記錄了模塊的變量,包括函數(shù)、其它導(dǎo)入的模塊、模塊級(jí)的變量和常量。還有就是內(nèi)置空間, 任何模塊均可訪問它,它存放著內(nèi)置的函數(shù)和異常

        python的全局空間存儲(chǔ)在一個(gè)叫 globals() 的dict對(duì)象中;局部名字空間存儲(chǔ)在一個(gè)叫 locals() 的dict對(duì)象中。可以用print (locals())來查看該函數(shù)體內(nèi)的所有變量名和變量值。

4.參數(shù):

        在globals和locals兩個(gè)參數(shù)為空時(shí),很好理解,expression就是一個(gè)str的表達(dá)式。eval()此時(shí)得到的就是該表達(dá)式的結(jié)果。
        當(dāng)locals參數(shù)為空,globals參數(shù)不為空時(shí),先查找globals參數(shù)中是否存在變量,并計(jì)算。當(dāng)兩個(gè)參數(shù)都不為空時(shí)先查找locals參數(shù),再查找globals參數(shù)。

5.關(guān)于locals和globals兩個(gè)參數(shù)的例子:

        5.1 傳遞全局變量:

print(eval("{'age':29,'name':name}",{"name":'小白piao'}))
#輸出結(jié)果:{'age': 29, 'name': '小白piao'}

        5.2 傳遞局部變量:

age = 29
print(eval("{'name':name,'age':age}",{"name":"小白piao"},locals()))
#輸出結(jié)果為:{'name': '小白piao', 'age': 29}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多