当前位置: 首页 > news >正文

漳州城乡住房建设部网站十大搜索引擎

漳州城乡住房建设部网站,十大搜索引擎,做品牌形象网站,廊坊百度关键词推广eval、literal_eval、exec函数的使用 eval函数literal_eval函数exec函数三者的区别 eval函数 eval()是Python中的内置函数,它可以将一个字符串作为参数,并将该字符串作为Python代码执行。它的语法格式为:eval(expression,globalsNone,locals…

eval、literal_eval、exec函数的使用

  • eval函数
  • literal_eval函数
  • exec函数
  • 三者的区别

eval函数

eval()是Python中的内置函数,它可以将一个字符串作为参数,并将该字符串作为Python代码执行。它的语法格式为:eval(expression,globals=None,locals=None)

expression参数:表示要执行的Python代码的字符串表示形式。
globals参数:表示全局变量的字典,当有global参数时,eval函数就执行gobals参数字典键对应的值,它的作用域就限于globals中。
locals参数:表示局部变量的字典,当局部变量中字典的键与全局变量中的字典的键相同时,优先执行locals参数中键对应的值。

在默认的情况下,eval()函数的作用范围为当前作用域的全局和局部变量。

具体代码如下:

# 定义一些使用的数据
na = 1
nb = 2
nc = {"na":3,"nb":1}
nd = {"na":4,"nc":5}'''
测试expression参数
'''
eval1 = eval("na+nb")'''
测试globals参数
'''
# 这里的na和nb必须时字典的键
# 因为你用到了globals参数
eval2 = eval("na+nb",nc)'''
测试locals参数
'''
# 这里globals参数中字典的键和locals参数中字典的键相同
# 此时eval函数会优先使用locals中字典对应键的值
eval3 = eval("na+nc",nc,nd)print(eval1)  # 3
print(eval2)  # 4
print(eval3)  # 9

我们常用的是eval函数和input函数的结合,input函数获取输入的值,并以字符串的形式进行返回。而这时我们的eval函数刚好能进行字符串的转换。具体代码如下:

ina = input("请输入一个整数:")
print(type(ina))  # <class 'str'>inb = eval(ina)
print(type(inb))   # <class 'int'>

eval函数的使用具有不安全性,它的可以执行任意的Python代码,包括恶意代码,如果函数参数是不可信的来源提供的,那么可能导致安全漏洞。例如:如果提供一个恶意的字符串”__import__('OS').system('rm -rf/')“,如果执行了此代码,那么会导致系统文件被删除,造成不可挽回的损失。所以在不可信的环境中我们应该避免使用eval函数,可以考虑更加安全的函数:literal_eval()函数

literal_eval函数

literal_eval()函数可以安全的评估包含字面表达式的字符串,因此不能用于解析任意的Python代码。它不会执行任何函数或导入模块,因此可以避免由于不可信代码的执行而导致的安全漏洞。literal_eval()函数使用时需要导入ast库它的语法格式为:ast.literal_eval(node_or_string)

node_or_string参数:表示包含要评估代码的字符或者编译过的代码对象。
具体代码如下:

import asts = "[2, 3, 4, 5]"# 它的字面表达式为列表
result = ast.literal_eval(s)print(result)   # [2, 3, 4, 5]

exec函数

exec函数用于执行一段动态生成的代码。它接收一个字符串作为参数,字符中包含了要执行的Python代码。exec函数可以被用于动态的导入模块、定义函数、类等操作,也具有不安全性。语法格式为:exec(object, globals=None, locals=None)

object参数:表示要执行的代码的字符串或和编译过的代码对象。
globals参数:表示全局变量的字典
locals参数:表示局部变量的字典

他的使用方法和eval函数有点相似,并且默认情况下使用当前作用域的全局和局部变量。

具体代码如下:

# 打印3  3次
code = '''
for _ in range(3):print("3")
'''
exec(code)

三者的区别

安全性:exec()和eval()函数都不具备安全性,在不可信的环境下避免使用。而literal_eval()函数具备安全性。

执行范围:exec()和eval()可以执行任意Python代码,而literal_eval()函数只能执行包括字符串、数字、元组、列表和字典等在内的字面表达式,不能执行任意Python代码(如函数和模块不能执行)。

http://www.wangmingla.cn/news/108300.html

相关文章:

  • 比较还做的调查网站志鸿优化网下载
  • 有网站怎么做企业邮箱网站结构有哪几种
  • 简单模板网站制作时间搜索引擎排名规则
  • 自己设计的网站如何推广论坛如何做seo
  • 济阳做网站公司安卓aso优化工具
  • 网站的基础建设项目seo推广营销靠谱
  • 广州网站开发 细致广州亦客网络百度指数的使用
  • 城乡建设网站报建需要什么黑帽seo技术有哪些
  • 网站开发专业是干嘛的湖南网站seo公司
  • 厦门网站制作费用明细深圳知名网络优化公司
  • 开发网站公司价格怎么优化标题和关键词排名
  • 邵阳专业网站设计怎么引流到微信呢
  • 网站做系统叫什么软件有哪些熊猫关键词挖掘工具
  • 企业网站模板购买最大的推广平台
  • b2c电子商务网站的收益模式主要有百度网站app下载
  • 有没有一些有试卷做的网站上海网站排名seo公司
  • ftp上传网站之后怎么做如何做网络推广推广
  • cn域名有名的网站网上推广赚钱方法
  • 公司网站有什么作用百度公司总部地址
  • 网站平台推广有哪些成都官网seo费用
  • 有什么ae做动图的网站军事新闻头条
  • 网站建设基本要素长沙网站制作主要公司
  • 家装设计网站开发汕头网站关键词推广
  • 有商家免费建商城的网站吗上海推广网络营销咨询热线
  • 建立简单的网站站内优化
  • wordpress 仿微信评论网站建设优化公司
  • 珠海公司网站设计搜索引擎大全排行榜
  • 多语言网站怎么实现如何推广一个网站
  • 个人婚礼网站设计俄罗斯搜索引擎推广
  • 做网站开发哪里可以接单5000元做百度推广效果怎么样