Python3使用exec函数将输入进来的结果的字符串的值解包成变量的值

Python3使用exec函数将输入进来的结果的字符串的值解包成变量的值,第1张

先看一下exec函数在命令行中的简单效果示例,完成对某个变量的赋值 *** 作,使一个字符串的值和放在代码里运行没有区别:

>>> exec('bed=5')
>>> bed
5

>>> exec('bedict={}')
>>> bedict
{}

假定输入的值为10, 2, [[1, 3], [10, 4]],那么我们想要通过解包为V, n, vw这三个变量赋值,那么相应的代码为:

# V, n, vw = 10, 2, [[1, 3], [10, 4]]
exec('V, n, vw = ' + input())
print(V, n, vw)

结果为:10 2 [[1, 3], [10, 4]]

下面是对Python3中exec函数的介绍

  • 描述:exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。
  • 语法:exec(object[, globals[, locals]])
  • 参数
    object:必选参数,表示需要被指定的 Python 代码。它必须是字符串或 code 对象。如果 object 是一个字符串,该字符串会先被解析为一组 Python 语句,然后再执行(除非发生语法错误)。如果 object 是一个 code 对象,那么它只是被简单的执行。
    globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。
    locals:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与 globals 相同的值。
  • 返回值:exec 返回值永远为 None。
  • 实例1:执行打印语句
    >>>exec('print("Hello World")')
    Hello World
    
  • 实例2:多行语句字符串
    >>> exec ("""for i in range(5):
    ...     print ("iter time: %d" % i)
    ... """)
    iter time: 0
    iter time: 1
    iter time: 2
    iter time: 3
    iter time: 4
    
  • 实例3
    x = 10
    expr = """
    z = 30
    sum = x + y + z
    print(sum)
    """
    def func():
        y = 20
        exec(expr)
        exec(expr, {'x': 1, 'y': 2})
        exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4}) 
    func()
    
    输出结果:
    60
    33
    34
    

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/740774.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存