美文网首页
python eval()方法

python eval()方法

作者: 隐墨留白 | 来源:发表于2018-12-03 18:10 被阅读0次

    面试中的一道题:
    修改函数,使之输入func_2能运行,并且输出结果为123。

    def func_1(a):
        return a()
    def func_2():
        return '123'
    b = input('>>')
    print(func_1(b))
    

    分析一下,输入func_2,b就被赋值为'func_2'。然后执行func_1函数,将字符串'func_2'传入,在执行a()。但是'func_2'是个字符串类型,如何才能执行func_2()函数呢?这里就用到了eval()方法。
    eval() 将字符串str当成有效的表达式来求值并返回计算结果。

    def func_1(a):
        print(type(a))
        return a()
    def func_2():
        return '123'
    b = eval(input('>>'))
    print(func_1(b))
    
    #未添加eval()函数前的结果
    >>func_2
    Traceback (most recent call last):
    <class 'str'>
     File "xxxxxx", line 7, in func_1
    print(func_1(b))
    File "xxxxxx", line 3, in func_1
    return a()
    TypeError: 'str' object is not callable
    
    
    #添加eval()函数后的结果
    >>func_2
    <class 'function'>     #变成了一个函数
    123
    

    小例子:

    def func():
        print('aaaaaaa')
    func()
    print(type(func))
    
    #运行结果
    aaaaaaa
    <class 'function'>
    
    Process finished with exit code 0
    

    再举几个eval()的例子:

    print(eval('4 + 5'))
    #9
    
    n = 1
    print(eval('n + 1'))
    #2
    
    a = 1
    p = {'a':20}
    print(eval('a+1',p))
    #21

    相关文章

      网友评论

          本文标题:python eval()方法

          本文链接:https://www.haomeiwen.com/subject/ydcucqtx.html