网站首页 > 基础教程 正文
简介
exec 执行储存在字符串或文件中的Python语句,相比于 eval,exec可以执行更复杂的 Python 代码。
exec函数功能强大,也很容易上手,在做未知变量定义时很好用。例如↓
有一个文本文件内容如下:
使用exec函数可以将其中的字符串语句定义为变量:
with open("data.txt","r",) as f:
for line in f.readlines():
exec(line)
print("speed=",speed,type(speed))
执行结果:
speed: 20 <class 'int'>
简单方便,看起来和普通定义的变量没什么区别。但是,当执行下面这段看似正常的代码时却报了错
def main():
exec("m=2")
print(m)
main()
报错信息:
NameError: name 'm' is not defined
报错信息提示m未定义,明明前一行刚用exec定义了m,下面却报了未定义的错。修改代码:
def main():
exec("m=2")
fun()
print(eval("m"))
main()
此次执行结果正常,说明eval对exec定义的变量能够正常运行。
修改代码,将exec函数放在最外层执行:
exec("m=2")
def main():
print(m)
main()
执行结果正常。
再次修改代码,将main.m定义为全局变量:
def main():
exec("main.m=2")
print("main.m=",main.m)
main()
执行结果:
main.m=2
这里的原因不明。不过根据我的实验和猜测原因可能与变量的作用域有关,exec定义的局部变量,只能使用eval调用。exec定义的全局变量则可以通用,所以建议在使用exec函数定义变量使,采用全局变量的定义方法。
猜你喜欢
- 2024-11-16 青少年Python编程系列26:初识Python的自定义函数
- 2024-11-16 P027 python基础:内建函数02(python内建函数大全)
- 2024-11-16 NCT 全国少年编程能力python 一级测试试卷
- 2024-11-16 Python 初学者必备的常用内置函数
- 2024-11-16 Python中读取txt文件中字典的值的方法及安全注意事项!
- 2024-11-16 Python不常见的8个小技巧(建议收藏)
- 2024-11-16 Python3通过字符串访问与修改局部变量
- 2024-11-16 DAY2-step3 Python运算子:算术,逻辑,比较,赋值,按位和优先级
- 2024-11-16 python大师讲解python对象类型(python中对象)
- 2024-11-16 初探Python动态执行的魅力 —— 从基础到实践
- 06-18单例模式谁都会,破坏单例模式听说过吗?
- 06-18Objective-c单例模式的正确写法「藏」
- 06-18单例模式介绍(单例模式都有哪些)
- 06-18前端设计-单例模式在实战中的应用技巧
- 06-18PHP之单例模式(php单例模式连接数据库)
- 06-18设计模式:单例模式及C及C++实现示例
- 06-18python的单例模式(单例 python)
- 06-18你认为最简单的单例模式,东西还挺多
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- location.search (79)
- bootstrap教程 (74)
- 单例 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)