python exec 函数_Python之浅谈exec函数
在Python中,exec()是一个十分有趣且使用的内置函数,不同于eval()函数只能执行计算数学表达式的结果的功能,exec()能够动态地执行复杂的Python代码,能够十分强大。具体的介绍可以参考官方文档: https://docs.python.org/3/library/functions.html#exec 。
本次分享讲简单聊聊exec()函数的用法,希望能给读者一点启示和参考。
首先是一个简单的小例子,代码如下:
i = 12
j = 13
exec("answer=i*j")
print("Answer is %s"%answer)
该代码的输出结果为:
Answer is 156
这表明第三句的exec()函数能够正确地执行Python代码,并且能将计算结果赋予answer变量,就像真正的Python代码一样。
那么,我们能不能让exec()函数执行一个复杂的Python代码呢?Why not?请看一下例子:
func = "def fact(n):\n\treturn 1 if n==1 else n*fact(n-1)"
exec(func)
a = fact(5)
print(a)
func为字符串,它是一个递归地计算整数阶乘的函数。因为exec()仅支持string和code object参数,所以我们要将该递归函数转化成一个字符串,当然,格式还是要Python代码的格式来,注意换行和缩进。刚才例子的输出结果为:
120
可能有些读者纳了闷了,这些代码不是直接能够在Python中执行吗,为何还要多此一举地把它写成字符串,并用exec()执行呢?笔者的答案是,刚才的例子只是为了演示exec()函数的基本用法,它的强大之处远不止于此。
在实际项目中,我们有些时候会将Python代码写入一些文件中,举个例子,如以下的eg.txt,它储存了我们想要的Python代码,如下:
def fact(n):
if n==1:
return 1
else:
return n*fact(n-1)
t = fact(6)
print(t)
请再次注意,这是一个txt格式的Python代码。那么,我们如何调用它呢?答案就是exec()函数,代码如下:
with open('E://eg.txt', 'r') as f:
s = f.read()
exec(s)
在上述代码中,我们先读取eg.txt文件的内容,再转交exec()函数执行,输出结果如下:
720
是不是有点棒呢?除了能执行string和code object外,还可以在exec()函数中加入参数,参数的传递可以写成字典(dict)形式。具体的使用方法可以参考下面的例子:
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
在expr语句中,有三个变量x,y,z,其中z值已给定,我们可以在exec()函数外指定x,y的值,也可以在exec()函数中以字典的形式指定x,y的值。在最后的语句中,我们给出了x,y,z的值,并且y值重复,exec()函数接收后面一个y值,且z值传递不起作用,因此输出结果为34.
---------------------
作者:剑与星辰
来源:CSDN
原文:https://blog.csdn.net/jclian91/article/details/80076512
版权声明:本文为博主原创文章,转载请附上博文链接!
python exec 函数_Python之浅谈exec函数相关推荐
- 计算机python指什么_python之浅谈计算机基础
目录 一.计算机基础之编程 什么是编程语言 什么是编程 为什么要编程 二.计算机组成原理 1. 计算机五大组成 CPU 存储器 输入设备 输出设备 2.计算机五大部分补充 CPU相关 应用程序启动流程 ...
- softmax函数_干货 | 浅谈 Softmax 函数
点击上方"视学算法",马上关注 来自 | 知乎 作者 | LinT链接丨https://zhuanlan.zhihu.com/p/79585726编辑 | 深度学习这件小事公众号仅 ...
- 浅谈云函数的代理IP利用面
浅谈云函数的代理IP利用面 前言 本篇文章介绍如何通过 Serverless(云函数) 实现各种扫描器探测功能,以达到绕过态势感知.WAF等安全设备,增大蓝队研判人员溯源难度,实现封无可封,查无可查的 ...
- 浅谈async函数await用法
async和await相信大家应该不陌生,让异步处理变得更友好. 其实这玩意儿就是个Generator的语法糖,想深入学习得去看看Generator,不然你可能只停留在会用的阶段. 用法很简单,看代码 ...
- Python之浅谈exec函数
在Python中,exec()是一个十分有趣且使用的内置函数,不同于eval()函数只能执行计算数学表达式的结果的功能,exec()能够动态地执行复杂的Python代码,能够十分强大.具体的介绍可 ...
- python eval函数_Python中eval与exec区别 | 萧小寒
摘要 学过JavaScript的人都知道,在JS中有一个函数叫内置函数叫eval.eval函数可计算某个字符串,并执行其中的的JavaScript代码.正是因为这个特性,所以现在很多教材都不推荐使用这 ...
- python sys模块作用_浅谈Python中的模块
模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Mod ...
- python 共享内存变量_浅谈python多进程共享变量Value的使用tips
前言: 在使用tornado的多进程时,需要多个进程共享一个状态变量,于是考虑使用multiprocessing.Value(对于该变量的具体细节请查阅相关资料).在根据网上资料使用Value时,由于 ...
- python数据类型转换原因_浅谈Python数据类型之间的转换
Python数据类型之间的转换 函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 compl ...
- python一共有多少个内置函数_Python 35个内置函数,你都ok吗?
Python一共有60多个内置函数,今天先梳理其中35 个 1 abs() 绝对值或复数的模 In [1]: abs(-6) Out[1]: 6 . 2 all() 接受一个迭代器,如果迭代器的所有元 ...
最新文章
- Python3中生成器介绍
- 亮度翻转_ROG幻13翻转本发布;联想IdeaPad 5G轻薄本即将上线
- go语言笔记——append底层实现和Cpp vector无异,只是有返回值,double后返回了新的vector地址而已...
- 验证码生成java_JAVA-验证码生成
- vsftp实现只能上传不能下载、删除权限配置
- 机器学习导论(张志华):多元高斯分布及应用
- 图片显示时加水印(不改变原图片)
- JVM常用的参数配置
- Linux经典实用的使用技巧33则和常用60个命令
- 你好,弗朗索瓦丝·萨冈
- 模板:二维凸包(计算几何)
- 在本地实现完成多台服务器之间文件拷贝
- 使用ASP .NET (C#) 產生PDF檔的好幫手—iTextSharp library (上)
- jmu-枚举WeekDay
- 网盘中搭建git服务
- C++ 从入门到入土(English Version)Section 8 : Recursion, Searching and Backtracking
- NVM:使用nvm安装管理node版本
- 简单了解Java语言
- ubuntu虚拟机联网配置
- ceph osd pg 状态介绍
热门文章
- 计算平均指令时间_上海原油期货将推出TAS指令
- cannot allocate memory in static TLS block问题记录
- 【新书推荐】大唐的裂变(套装共5册)(王澄明等著)
- 基于python的图像灰度值处理(opencv)
- 99%的手机Root方法都在这里
- iOS 新浪新闻首页卡片滚动特效实现
- 中考计算机考试不合格会怎么样,中考考试细节:信息技术不合格 可申请重考1次...
- layui 上传图片 返回图片地址
- Hulugans看什么 | 50多部迪士尼经典动画片带你重温童年
- 为什么网页游戏不停开新服务器,网页游戏为什么要不断开新服?