eval函數


一、eval函數的定義

1、定義

eval() 函數用來執行一個字符串表達式,並返回表達式的值。

2、語法

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

  expression : 表達式。

   globals : 變量作用域,全局命名空間,如果被提供,則必須是一個字典對象。

   locals : 變量作用域,局部命名空間,如果被提供,可以是任何映射對象。

 3、實例

>>> eval('2*4')
8
>>> eval('pow(2,2)')
4
>>> eval('2+5')
7
>>>

二、字符串轉成列表

>>> l1="[1,2,3,4,5]"
>>> type(l1)
<class 'str'>
>>> l2=eval(l1)
>>> type(l2)
<class 'list'>
>>>

三、字符串轉成字典

>>> d1={'name':'bright','age':12}
>>> d1="{'name':'bright','age':12}"
>>> type(d1)
<class 'str'>
>>> d2=eval(d1)
>>> type(d2)
<class 'dict'>
>>> d2
{'age': 12, 'name': 'bright'}
>>>

四、字符串轉成元祖

>>> t1="(1,2,3,4)"
>>> type(t1)
<class 'str'>
>>> t2=eval(t1)
>>> type(t2)
<class 'tuple'>
>>>

五、字節轉成字典

redis數據庫中可以存儲多種數據類型,但是如果想使用redis存儲字典類型的數據呢?像如下形式:

{
    '/crm/dept': ['get'], 
    '/crm/menus': ['get'], 
    '/rbac/roles': ['get'],
    '/rbac/roles/(?P<roleId>\\d+)/permission$': ['put'],
    '/rbac/rights/list': ['get'],
    '/rbac/roles/(?P<roleId>\\d+)/permission/(?P<permissionId>\\d+)$': ['delete'],
    '/crm/user': ['get', 'post']
}

此時可以將字典當成字符串來進行存儲:

#自己定義key值,字典當成value值

r.set(key,value)

但是使用get取值時,取出的時bytes類型的值,此時可以使用eval函數,將bytes類型轉成字典類型

dict = eval(r.get(key))

 


免責聲明!

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



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