python中的eval 和 exec 和 execfile
#eval 函数用来计算python表达式并返回结果
#exec 可以执行动态的python代码,不返回结果
def hello(): print("hello world")
eval("hello()") 输出 hello world
exec("hello()") 输出 hello world
##
或者这样执行也可以
eval("hello")()
区别上:
1 eval 可以返回结果
def hello():
print("hello world")
return "test"
val = eval("hello()") print(val) #输出 hello world test
exec 没有返回值
def hello(): print("hello world") return "test" val = exec("hello()") print(val)
#输出
File "Z:/myproject/myproject/test.py", line 9
val = exec("hello()")
^
SyntaxError: invalid syntax
2 相比eval , exec可以执行更复杂的 Python 代码
testtext = ''' for i in range(3): print("the num is %d" % i) ''' exec(testtext)
#输出
the num is 0
the num is 1
the num is 2
上面的语句 eval 执行不了。eval 只能执行 字符串表达式
def hello(): for i in range(4): print("the num is %d" % i) eval("hello()") #会正常输出
execfile
execfile() 函数可以用来执行一个文件
需要说明的是在 Python2 中exec不是函数,而是一个内置语句(statement),但是Python 2中有一个 execfile() 函数。可以理解为 Python 3 把 exec 这个 statement 和 execfile() 函数的功能够整合到一个新的 exec() 函数中去了。
[root@localhost weblearn]# python t.py asdasdf [root@localhost weblearn]# cat 1.py execfile("t.py") [root@localhost weblearn]# cat t.py def hello(): print("asdasdf") hello() [root@localhost weblearn]# python 1.py asdasdf
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程