技术标签: python
字符串作为代码执行的方法:
1、eval()
构造器:eval(source, globals=None, locals=None, /)
说明:输入一个【python表达式或code对象】参与计算。
用于恶意攻击,窥视:
再看下eval的参数globals和locals参数的用法,看栗子:
一幕了然,局部变量空间和全局变量空间的优先级的先后顺序~
2、exec
首先看下,exec和eval的区别
查阅官方doc:
细微差别:
eval:
(1)只能是一个表达式【也就是一行语句】字符串!
(2)可以计算, 也可以返回计算结果【也就是说表达式的结果就是eval的返回值】,不对代码做evaluate,即不产生新的变量等。
exec:
(1)指定一个包含一个多行语句的字符串对象。
(2)可以产生新的变量,但没有返回值(也就是None)。【需要区分函数的返回值和代码执行过程中的输出悉尼】
3、动态创建变量
(1)locals():字典类型,存放本地变量的命令空间
(2)exec()可以产生新的变量,eval()不行。
4、compile()
eval和exec的doc中都会提到compile,那么compile()到底怎么使用呢?
看doc可知:compile()将源码转为code对象,然后再传入给eval或者exec执行。
总结:
(1)compile()作用就是预包装code为一个对象,然后作为eval和exec的参数,同时支持很多其他功能,比如控制code的输出信息等等。
(2)compile重点参数在于mode,本质上和eva和exec一样!(使用exec模式,可以包装多行代码,而且eval()和exec()都可以执行,但是使用eval模型,则只能包装表达式!)
更多学习笔记可以关注我的微信公众号「kelly学挖掘」,欢迎交流。
--- over --
文章浏览阅读1.2k次。源代码见:将在本博客中陆续发布。。。下载地址:即将上传。AutoLisp程序可用appload命令加载。推荐加载时加入自启动组。所有命令均以“zz”开头,程序加载后在命令行中输入“zz”就会弹出所有命令列表,用上、下键在列表中选择后按回车键执行即可。
文章浏览阅读972次。简单介绍一下关系数据库三范式?一、简单介绍一下关系数据库三范式?二、事务四个基本特征或 ACID 特性。一、简单介绍一下关系数据库三范式? 范式就是规范,就是关系型数据库在设计表时,要遵循的三个规范。要想满足第二范式必须先满足第一范式,要满足第三范式必须先满足第二范式。 第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。列数据的不可分割。 第二范式(2NF)要求数据库表中的每个行必须可以被唯一地区分。为实
文章浏览阅读665次。如何解决并发修改异常解决方法:1.采用列表迭代器解决,添加元素的时候,必须使用列表迭代器的添加元素的方法。特点:在当前元素的后面添加指定元素2.采用普通for循环的方式遍历集合,并添加元素。特点:在集合元素的最后添加指定的元素3.采用CopyOnWriteArrayList集合实现,它自身已经规避了并发修改异常。特点:在集合元素的最后添加指定的元素..._并发修改异常处理java
文章浏览阅读2.9k次。1.ES安装配置文件1.1主节点配置文件# ======================== Elasticsearch Configuration =========================# ---------------------------------- Cluster -----------------------------------cluster.name: GzEsCluster# ------------------------------------ Node_it doesn't look like the x-pack security feature is available on this elasti
文章浏览阅读1.3k次。参考:http://www.linuxidc.com/Linux/2016-09/135026.htm https://gist.github.com/doctorpangloss/f8463bddce2a91b949639522ea1dcbe4sudo brew install -vd snappy leveldb gflags glog szip lmdbsudo brew tap home_mac怎么下载tensorflow caffe
文章浏览阅读503次。什么是XFS文件系统XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,非常健壮。所幸的是SGI将其移植到了Linux系统中。在linux环境下。目前版本可用的最新XFS文件系统的为1.2版本,可以很好地工作在2.4核心下。我们在这里要讲的是xfsdump和xfsrestore命令:XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据。xf..._xfs 备份
文章浏览阅读1.6k次。stb 是机顶盒的简称,在模拟和数字转换的过程中,STB起到不可估量的作用,目前比较大牌的STB芯片厂商有ST、阿里、MStar、海斯等,主芯片可能不同,但是处理流程却是大同小异,现在大概总结如下:数字电视传输过程中是以射频信号承载的,也就是说在我们家中的信号线中传输的是射频信号,当我们吧信号线插上机顶盒后,射频信号通过tuner将某一频点的信号调制成中频信号,中频信号经过demod解调成8路_stb码
文章浏览阅读91次。短视频市场蓬勃发展,视频剪辑类App也顺利搭上便车。剪辑市场火热,巨头纷纷驶入。如今,有一家剪辑软件公司已经开启了上市的步伐。近日,杭州小影创新科技股份有限公司申请创业板上市已获得受理,拟募集8.49亿元,用于主营业务相关的项目建设。很多人不禁疑惑,小影科技是谁?资料显示,小影科技成立于2012年,在移动视频编辑赛道上已经深耕了多年,是一家老牌的剪辑软件公司,旗下产品对于剪辑的多个领域均有涉猎,覆盖人群广阔。小影科技的旗下产品如VivaVideo、VivaVideo Pro、VivaCu_小影科技
文章浏览阅读1.7k次。Effective Exception Handling in Visual C++在C++中进行有效的异常处理 出自CodeProject,原文链接:http://www.codeproject.com/Articles/207464/Exception-Handling-in-Visual-Cplusplus 译:[email protected]_handling vb activex events in visual c++ client
文章浏览阅读725次。脚本只使用问卷星,多选题目前为选中任意选项数量!!!!!!!最近看到很多群里都在发问卷连接,各种求帮忙,正好这两天没任务,尝试写了自动填问卷的脚本,类似的脚本网上已经有了,但是后来问卷星加了验证,并且多选题已经不能适用脚本使用方式(以Firefox为例):一:鼠标移动到浏览器地址栏下空白处,右键,新建书签二:填写名称(任意),代码复制到地址栏中三:打开问卷星连接,然后点击刚刚添加的书签,即可。代码..._php 如何对接问卷星
文章浏览阅读4.2w次。系统:Windows 10版本:PostgreSQL 10.4PostgreSQL 支持 UUID(Guid) 类型,但是却不能直接去用,因为默认安装的postgresql 是不带 UUID 函数的,那怎么生成一个 UUID 呢,以下是搜索到的针对不同系统的不同解决方案,Windows 10 已验证可行。Linux 环境下:从安装目录下 share/contrib 下找 uuid..._pg生成uuid
文章浏览阅读2.2w次,点赞3次,收藏2次。解决方法:重新创建certificate证书,上传本机的CSR证书认证文件然后下载证书到桌面,双击安装后,重新发布app到App Store中即可_ios cert is incomplete. no private key found in