• python eval和literal_eval


    eval是python中一个相当智能的函数,把参数当成表达式,进行最大限度的解析,

    比如:

    a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
    
    b = eval(a)
    
    b
    Out[3]: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]
    
    type(b)
    Out[4]: list
    
    a = "{1: 'a', 2: 'b'}"
    
    b = eval(a)
    
    b
    Out[7]: {1: 'a', 2: 'b'}
    
    type(b)
    Out[8]: dict
    
    a = "([1,2], [3,4], [5,6], [7,8], (9,0))"
    
    b = eval(a)
    
    b
    Out[11]: ([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))
    

    从以上可以看出,eval相当的好用,但是它也能解析一些输入命令,比如:

    eval("__import__('os').system('dir')")
    

    这样写会将当前目录下的文件全都显示出来,如果换成删除,那麻烦就大了。

    所以,很多时候我们需要在转换前先检查下表达式的合法性,或者直接使用literal_eval,这个函数会自动的检查安全性和合法性,如果有问题就会直接抛出异常,使用literal_eval前要先导入ast。

  • 相关阅读:
    ios实现下拉刷新,上拉加载
    ios实现瀑布流
    ios收货地址三级联动选择
    ios仿淘宝管理收货地址demo
    引用传值
    继承小结
    is操作符和as操作符
    抽象类和object类
    重写基类
    派生
  • 原文地址:https://www.cnblogs.com/likui360/p/5770601.html
Copyright © 2020-2023  润新知