一、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))
