欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

詳解python eval函數的妙用

系統 1848 0

python eval函數功能:將字符串str當成有效的表達式來求值并返回計算結果。

函數定義:

            
eval(expression, globals=None, locals=None)
          

將字符串str當成有效的表達式來求值并返回計算結果。globals和locals參數是可選的,如果提供了globals參數,那么它必須是dictionary類型;如果提供了locals參數,那么它可以是任意的map對象。

python的全局名字空間存儲在一個叫globals()的dict對象中;局部名字空間存儲在一個叫locals()的dict對象中。我們可以用print (locals())來查看該函數體內的所有變量名和變量值。

Python版本兼容:

  1. Python2.7
  2. Python3.x

eval()主要作用:

1)在編譯語言里要動態地產生代碼,基本上是不可能的,但動態語言是可以,意味著軟件已經部署到服務器上了,但只要作很少的更改,只好直接修改這部分的代碼,就可立即實現變化,不用整個軟件重新加載。
2)在machin learning里根據用戶使用這個軟件頻率,以及方式,可動態地修改代碼,適應用戶的變化。

英文解釋:

The arguments are a string and optional globals and locals. If provided, globals must be a dictionary. If provided, locals can be any mapping object.

The expression argument is parsed and evaluated as a Python expression (technically speaking, a condition list) using the globals and locals dictionaries as global and local namespace. If the globals dictionary is present and lacks ‘__builtins__', the current globals are copied into globals before expression is parsed. This means that expression normally has full access to the standard builtins module and restricted environments are propagated. If the locals dictionary is omitted it defaults to the globals dictionary. If both dictionaries are omitted, the expression is executed in the environment where eval() is called. The return value is the result of the evaluated expression. Syntax errors are reported as exceptions. Example:

例子:

            
a=1
g={'a':20}
eval("a+1",g)
          

結果:
1

例子2, 測試globals, locals

            
x = 1
y = 1
num1 = eval("x+y")
print (num1)
def g(): 
 x = 2 
 y = 2 
 num3 = eval("x+y") 
 print (num3)  
 num2 = eval("x+y",globals()) 
 #num2 = eval("x+y",globals(),locals()) 
 print (num2)
  
g()
          

num1的值是2;num3的值也很好理解,是4;num2的值呢?由于提供了globals()參數,那么首先應當找全局的x和y值,也就是都為1,那么顯而易見,num2的值也是2。如果注釋掉該句,執行下面一句呢?根據第3)點可知,結果為4

實例展示:

可以把list,tuple,dict和string相互轉化。

            
#################################################
字符串轉換成列表
>>>a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
>>>type(a)

            
              
>>> b = eval(a)
>>> print b
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
>>> type(b)

              
                
#################################################
字符串轉換成字典
>>> a = "{1: 'a', 2: 'b'}"
>>> type(a)

                
                  
>>> b = eval(a)
>>> print b
{1: 'a', 2: 'b'}
>>> type(b)

                  
                    
#################################################
字符串轉換成元組
>>> a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
>>> type(a)

                    
                      
>>> b = eval(a)
>>> print b
([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))
>>> type(b)

                      
                    
                  
                
              
            
          

安全問題:

因為eval的特型, 很可能被黑客利用,造成安全問題。

怎么避免安全問題?

1、自行寫檢查函數;

2、使用ast.literal_eval代替

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 午夜伦理影院 | 99在线这精品视频 | 日韩精品亚洲专区在线电影不卡 | 国产成人免费无庶挡视频 | 国产日韩久久久精品影院首页 | 国产高清永久免费 | 拍真实国产伦偷精品 | 九九精品九九 | 中文字幕av一区二区三区 | 毛片免费观看视频 | 国产精品一二区 | 日韩免费在线视频 | 韩国一大片a毛片 | 99人体做爰视频 | 亚洲免费a| 一区二区三区日本在线观看 | 亚洲最黄视频 | 国产精品欧美一区二区在线看 | 97美女网| 亚洲精品国产电影 | 国产一区二区不卡 | 在线精品亚洲欧美日韩国产 | 国产免费观看一级国产 | 亚洲国产日韩在线一区 | 97av| 波多野结衣三级视频 | 久萆app污版下载网站 | 亚洲成人中文字幕 | 99亚洲精品 | 五月亭亭激情五月 | 国产欧美一区二区三区精品 | 视频一区二区中文字幕 | 草草影院永久地址 | 久久久一区二区三区精品 | 国产精品久久福利新婚之夜 | 一级毛片免费 | 9久久9久久精品 | 99久久久国产精品 | 欧美日韩在线观看精品 | 69久久夜色精品国产69 | 天天舔天天射天天操 |