Python 中 eval 函數的神奇用法

Python 中 eval 函數的神奇用法

Python 中 Eval 函數的用法

ambda的通常形式是關鍵字lambda後面跟一個或多個參數,緊跟一個冒號,之後是一個表達式。lambda是一個表達式而不是一個語句。它可以出如今Python語法不容許def出現的地方。做爲表達式,lambda返回一個值(即一個新的函數)。lambda用來編寫簡單的函數,而def用來處理更強大的任務。
eval(str)函數很強大,官方解釋爲:將字符串str當成有效的表達式來求值並返回計算結果。因此,結合math當成一個計算器很好用。ide

eval()函數常見做用有:函數

一、計算字符串中有效的表達式,並返回結果

Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: eval('1+1')
Out[1]: 2

In [2]: eval('pow(2,2)')
Out[2]: 4

In [3]: n = 10

In [4]: eval('n+1')
Out[4]: 11

In [11]: def hello():
    ...:     print('hello')
    ...:

In [12]: eval('hello()')
hello

In [13]: eval('hello')()
hello

二、將字符串轉成相應的對象(如list、tuple、dict和string之間的轉換)

>>> a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>> b = eval(a)
>>> b
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
>>> a = "{1:'xx',2:'yy'}"
>>> c = eval(a)
>>> c
{1: 'xx', 2: 'yy'}
>>> a = "(1,2,3,4)"
>>> d = eval(a)
>>> d
(1, 2, 3, 4)

三、將利用反引號轉換的字符串再反轉回對象

>>> list1 = [1,2,3,4,5]
>>> `list1`
'[1, 2, 3, 4, 5]'
>>> type(`list1`)
<type 'str'>
>>> type(eval(`list1`))
<type 'list'>
>>> a = eval(`list1`)
>>> a
[1, 2, 3, 4, 5]
相關文章
相關標籤/搜索