Exec函数可以动态执行python程序的代码。该代码可以作为字符串或目标代码传递给此函数。在第一次解析字符串并检查是否存在语法错误时,将按原样执行目标代码。如果没有语法错误,则将解析的字符串作为python语句执行。

exec()方法语法exec(object, globals, locals)

哪里对象-传递给方法的字符串或代码对象。

globals-可用的全局方法和变量的字典。

locals-可用的本地方法和变量的字典。

传递字符串

在下面的示例中,我们将一行代码作为字符串传递给该exec()函数。Itr被解析并执行以提供输出。x = 9

exec ('print(5*x)')

输出结果

运行上面的代码给我们以下结果-45

传递代码对象

现在,我们了解如何通过多个代码语句传递代码块。由于它是一个代码对象,因此将直接执行以给出结果。请注意,我们如何使用\ n和空格创建带有适当缩进的python代码块。

示例prog_block = 'x = 3 \nif(x

exec(prog_block)

输出结果

运行上面的代码给我们以下结果-9

没有全局和局部参数

当我们不为全局和局部参数传递任何值时,我们将根据导入到程序中的包获得默认的可用功能。在下面的示例中,当跳过全局和局部参数值时,我们将看到为我们提供所有可用功能的代码。from time import *

exec("print(dir())")

运行上面的代码给我们以下结果-['In', 'Out', '_', '__', '___', '__builtin__', '__builtins__', '__doc__', '__file__', '__name__',

'__package__', '_dh', '_exit_code', '_i', '_i1', '_i10', '_i11', '_i12', '_i13', '_i14', '_i15',

'_i16', '_i17', '_i18', '_i19', '_i2', '_i20', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'clock',

'copysign', 'cos', 'cosh', 'ctime', 'daylight', 'degrees', 'e', 'erf', 'erfc', 'exit', 'exp', 'expm1',

'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'get_ipython', 'gmtime', 'hypot',

'isinf', 'isnan', 'ldexp', 'lgamma', 'localtime', 'log', 'log10', 'log1p', 'mktime', 'modf', 'pi',

'pow', 'prog', 'prog_block', 'quit', 'radians', 'sin', 'sinh', 'sleep', 'sqrt', 'strftime', 'strptime',

'struct_time', 'tan', 'tanh', 'time', 'timezone', 'trunc', 'tzname', 'x']

应用具有全局参数的限制

我们可以通过传递空字典作为全局参数来限制对导入模块的任何功能的访问。在这种情况下,结果将仅显示内置功能,而不会显示导入模块中的任何功能。这就是我们限制和使功能更安全的方式。

示例from time import *

exec("print(dir())",{})

输出结果

运行上面的代码给我们以下结果-['__builtins__']

仅允许选择的功能

接下来,我们将看到如何仅将某些选定的函数应用于exec()导入模块中的方法。在下面的示例中,我们仅使用Global选项将所需的函数用作参数。该localtime()方法是在程序中导入的时间模块的一部分。from time import *

exec("print lclt()",{"lclt":localtime})

输出结果

运行上面的代码给我们以下结果-time.struct_time(tm_year=2019, tm_mon=7, tm_mday=19, tm_hour=12, tm_min=33, tm_sec=53, tm_wday=4, tm_yday=200, tm_isdst=0)

传递局部参数

我们还可以通过使用局部参数并完全排除内置函数来限制从导入模块中使用各种函数。在下面的示例中,我们选择“无”作为内置全局参数的值。

示例from time import *

exec("print(dir())", {"__builtins__" : None}, {"gtime": gmtime, "print": print, "dir": dir})

运行上面的代码给我们以下结果-['dir', 'gtime', 'print']

python中exec是什么意思_Python中的exec()相关推荐

  1. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  2. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  3. python post与get的区别_python中get和post有什么区别

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...

  4. python深复制与浅复制_Python中的深拷贝和浅拷贝详解

    要说清楚Python中的深浅拷贝,需要搞清楚下面一系列概念: 变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝) [变量-对象-引用] 在Python中一切都是对象,比如说:3, ...

  5. python运行mcmc为何老出错_python中mcmc方法的实现

    MCMC方法在贝叶斯统计中运用很多,MIT发布的EMCEE是实现的比较好的.介绍页面在下面.源代码中examples里的代码可以帮助理解各种功能,特别是line.py 列出了最小二乘法,最大似然法和M ...

  6. python实例属性与类属性_Python中的类属性和实例属性引发的一个坑-续

    上篇文章Python 中的类属性和实例属性,我们探讨了类属性和实例属性引发的一个小坑.总结了类属性和实例属性的区别如下:类属性可以被类和实例调用,实例属性只能被实例调用 类属性不会随着实例的调用而改变 ...

  7. python计算数组元素的和_python中数组的运算

    Python中进行数组的运算需要调用NumPy包. 其官网是:http://www.numpy.org/​www.numpy.org NumPy是Python语言的一个扩充程序库.它支持高级大量的维度 ...

  8. python中格式化字符串的作用_python中字符串格式化的意义(化妆)

    格式 描述 %%百分号标记 #就是输出一个% %c字符及其ASCII码 %s字符串 %d有符号整数(十进制) %u无符号整数(十进制) %o无符号整数(八进制) %x无符号整数(十六进制) %X无符号 ...

  9. python中 r是什么意思_python中rb含义理解

    Python文件读写的几种模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 文件使用方式标识 'r':默认值,表示从文件读取数据 'w':表示要向文件写入数据,并截断以前 ...

  10. python字典是什么的集合_Python中的字典和集合

    文章目录字典1.介绍 2.创建字典 3.字典内元素的访问 4.字典元素的添加.修改.删除 5.关于字典的其它操作 6.字典存储底层原理 集合1.介绍 2.相关操作 3.集合元素的添加 4.移除元素 字 ...

最新文章

  1. PHP中阶,PHP进阶
  2. 关于VB中没有VSS菜单问题
  3. finally 90%
  4. OWIN的理解和实践(三) –Middleware开发入门
  5. 1042. 字符统计(20)
  6. erpnext mysql_windows7+docker+erpnext部署
  7. 湖北汽车工业学院c语言程序设计 汽车零部件采购管理程序,湖北汽车工业学院c语言课程设计实验报告(采购信息管理系统).docx...
  8. 2022年中国功能性儿童学习用品行业发展趋势报告
  9. Skyline软件二次开发初级——6如何在WEB页面中的三维地图上进行坐标和方向计算...
  10. sciencesoftware科学软件
  11. python colorbar刻度_python-如何添加Matplotlib Colorbar刻度
  12. 二叉树的左视图-java
  13. 末日孤舰第三季/全集The Last Ship 迅雷下载
  14. C语言解析wav文件格式
  15. java 函数打印------------分割线
  16. cakephp笔记——find()函数
  17. MSSQL 如何删除字段的所有约束和索引
  18. 弘辽科技:千人千面你理解清楚了吗?
  19. 最最最基础的C++代码
  20. 17、内网渗透测试定位技术总结

热门文章

  1. Redis入门完整教程:复制原理
  2. 电脑设置了从睡眠中唤醒需要密码却没生效(已解决)
  3. 集易市场微信小程序项目
  4. 基于深度学习的三维重建算法综述
  5. 【R实验.7】回归分析
  6. 【BZOJ1645】[Usaco2007 Open]City Horizon 城市地平线 离散化+线段树
  7. windows10将耳机当作麦克风
  8. 小乖乖专属-从数据库里查信息发邮件
  9. 整数无序数组求第k大数
  10. 小程序中实现拍照,自拍功能