python笔记-调用eval函数出现invalid syntax错误

  本来是想打算使用eval函数对变量进行赋值的,没想到出现了invalid syntax错误。源代码如下

In [2]: eval(‘a = 1‘)
  File "<string>", line 1
    a = 1
      ^
SyntaxError: invalid syntax

  百度没百度到结果,最后在stackoverflow上找到了好的答案,这里是原文链接

  作者的意思是,eval函数只负责对表达式进行处理,并没有赋值的功能,也就是说,eval函数只负责对你的输入进行输出,True还是False又或者是什么东西。但它本身是没有影响当前代码环境的能力的。如果我们想用来进行赋值,那么应该使用exec()函数。看代码:

In [3]: exec(‘a = 1‘)

In [4]: a
Out[4]: 1

  问题的解决方案已经供出了,那么我们现在再看看官方文档对这两个函数怎么说。

eval(expression, global=None, local=None)

参数是字符串和可选的global和local。global应当为一个字典文件,local应为一个映射对象。

  expression参数将被处理为一个python的表达式(严格来说,是一串条件语句),global和local参数将被用来当做全局和局部的命名空间。

exec(object[,global,[locals])

  这个函数能够为python提供动态的代码执行功能。

  看,官方对其功能的描述都是这么的不一样,有兴趣的同学可以去看更详细的文档~更详细的点这里

时间: 2024-10-03 14:03:55

python笔记-调用eval函数出现invalid syntax错误的相关文章

[Effective JavaScript 笔记]第17条:间接调用eval函数优于直接调用

eval函数不仅仅是一个函数.大多数函数只访问定义它们所在的作用域,而不能访问除此之外的作用域(词法作用域).eval函数具有访问调用它时的整个作用域的能力.编译器编写者首次设法优化js时,eval函数很难高效地调用任何一个函数,因为一旦调用的函数是eval函数,那么每个函数调用都需要确保在运行时整个作用域对eval函数是可访问的.语言标准演化出辨别两种不同的调用eval的方法.第一种方式:函数调用涉及eval标识符,被认为是一种“直接”调用eval函数的方式.编译器需要确保被执行的程序具有完全

在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’

如题,在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: '文件路径',在查阅了大量资料后也得到了一些解决方案,但是这些解决方案对于作者的情况都不适用,依然报错,没办法,虽然作者的英语水平很不咋地,但中文帮不了作者,只好求助于英文了. ? ? ? ?建议各位看客在修改时,仔细看清楚自己的情况是否适用.废话不多说,开始正文. ? ? ? ?作者的路径为open('D:\LearningBooks\test.txt') ? ?

Python3.4 解释一段程序时提示SyntaxError: invalid syntax错误

问题描述: 我用的Python版本是3.4. 这里是一段程序及解释结果: 提示错误: SyntaxError:invalid syntax . 其实这句话的意思就是"语法错误:不正确的语法". 所以就很明白了,这几句代码不符合语法规范. 但是有些人可能觉着奇怪,明明是教程上原封不动拷过来的代码,怎么会语法错误? 原因在于:这段代码符合的语法规范是Python2.7的,而我使用的版本是3.4的.Python3.4的语法规范和2.7是有区别的.就本段代码而言,区别在于:3.4中print后

#python#子类调用父类函数的方法

Python中的子类中的__init__()函数会覆盖父类的函数,一些情况往往需要在子类里调用父类函数. 如下例程里,???处是需要调用父类函数的地方,接下来结合例程具体介绍. 1 1 # -*- coding:utf-8 -*- 2 2 class Student: 3 3 def __init__(self,name): 4 4 self.name=name 5 5 def ps(self): 6 6 print('I am %s'%self.name) 7 7 8 8 class Scor

python自动化之eval()函数

eval()函数说明:将字符串str当成有效的表达式来求值并返回计算结果,即将str转化为list,tuple,dict.例子: a = '[1,2,3,4]' b = '([1,2],[4],"c")' c = '{2,3,4,5}' print(eval(a),type(eval(a))) print(eval(b),type(eval(b))) print(eval(c),type(eval(c))) 输出: [1, 2, 3, 4] <class 'list'> (

python笔记21-内置函数

# print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真# print(any([0,0,0,0,0]))#判断可迭代的对象里面的值是否有一个为真# print(bin(10))#十进制转二进制 #下面这些函数都是强制类型转换# print(bool('s'))#把一个对象转换成布尔类型# int()#整形# float()#小数# str()#zifuc# dict()#字典# list()#列表# set()#集合# tuple()#元组,元组里面值不可变,列表可以

Python学习札记-eval函数

eval()函数 eval()官方文档里面给出来的功能解释是:将字符串string对象转化为有效的表达式参与求值运算返回计算结果 语法上:调用的是:eval(expression,globals=None, locals=None)返回的是计算结果 功能:将字符串str当成有效的表达式来求值并返回计算结果. 语法: eval(source[, globals[, locals]]) -> value 参数: source:一个Python表达式或函数compile()返回的代码对象 global

Python笔记三(函数)

一.函数的简介 我们写一个计算字符串或列表等长度的方法,方法类似len()方法,发现实现的代码几乎相同: 1 s1='1234567890' 2 def my_len(): 3 count = 0 4 for i in s1: 5 count+=1 6 print(count) 7 my_len() 8 print(len(s1)) 首先,之前只要我们执行len方法就可以直接拿到一个字符串的长度了,现在为了实现相同的功能我们把相同的代码写了好多遍 —— 代码冗余 其次,之前我们只写两句话读起来也

Python代码调用JS函数

采集过程中,遇到了一个token是经过JS加密生成的,于是乎进行JS断点追踪,生成了完整的生成token值的JS函数文件. 这个JS函数需要在Python代码中调用,通过输入一个参数,然后会输出一个token值. 所需模块: pip install pyexecjs 注意:这里安装的模块叫:pyexecjs, 但是调用的时候的名字是:execjs 具体调用步骤: # -*- coding: utf-8 -*- import execjs def get_js(): # f = open("./.