相关疑难解决方法(0)

如何创建可变数量的变量?

如何在Python中完成变量变量?

这是一个精心设计的手动条目,例如:变量变量

我听说这是一个坏主意,但它是Python中的一个安全漏洞.真的吗?

python variable-variables

315
推荐指数
13
解决办法
12万
查看次数

为什么使用'eval'是一种不好的做法?

我正在使用以下课程轻松存储我的歌曲数据.

class Song:
    """The class to store the details of each song"""
    attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location')
    def __init__(self):
        for att in self.attsToStore:
            exec 'self.%s=None'%(att.lower()) in locals()
    def setDetail(self, key, val):
        if key in self.attsToStore:
            exec 'self.%s=val'%(key.lower()) in locals()
Run Code Online (Sandbox Code Playgroud)

我觉得这比写出一个if/else块更具可扩展性.但是,eval似乎被认为是一种不良做法并且使用起来不安全.如果是这样,任何人都可以向我解释为什么并告诉我一个更好的方法来定义上面的类?

python eval

125
推荐指数
6
解决办法
3万
查看次数

如何从字符串中的代码加载模块?

我有一些字符串形式的代码,并希望在不写入磁盘的情况下创建一个模块.

当我尝试使用imp和StringIO对象来执行此操作时,我得到:

>>> imp.load_source('my_module', '', StringIO('print "hello world"'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: load_source() argument 3 must be file, not instance
>>> imp.load_module('my_module', StringIO('print "hello world"'), '', ('', '', 0))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: load_module arg#2 should be a file or None
Run Code Online (Sandbox Code Playgroud)

如何在没有实际文件的情况下创建模块?或者,如何在不写入磁盘的情况下将StringIO包装在文件中?

更新:

注意:此问题在python3中也是一个问题.

我试图加载的代码只是部分信任.我已经完成了它,并确定它不会导入任何东西或做任何我不喜欢的事情,但我不相信它足以运行它,当我有可能被修改的局部变量,并且我不相信我自己的代码,以避免我试图导入的代码.

我创建了一个只包含以下内容的空模块:

def load(code):
    # Delete all local variables
    globals()['code'] = code
    del locals()['code']

    # Run the code
    exec(globals()['code'])

    # …
Run Code Online (Sandbox Code Playgroud)

python

30
推荐指数
3
解决办法
2万
查看次数

eval SyntaxError:python中的语法无效

我想分配:

x0='123'    
x1='123'    
x2='123'    
x3='123'    
x4='123'    
x5='123'    
x6='123'    
x7='123'    
x8='123'    
x9='123'    
Run Code Online (Sandbox Code Playgroud)

我编写代码来表示我可以123在输入时获取字符串的输出x1x8.

for i in range(0,10):
    eval("x"+str(i)+"='123'")

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<string>", line 1
  x0='123'
  ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

python

11
推荐指数
2
解决办法
2万
查看次数

exec/eval的替代品?

我一直试图找到一种方法来可靠地设置和获取变量的值与字符串中的名称.我可以远程接近这一点找到的任何东西似乎都不起作用.变量可以在任何模块中,并导入这些模块.

获取和设置变量值的安全/正确方法是什么?

ps - 我和他们来到python一样新手

python python-2.7

7
推荐指数
1
解决办法
3727
查看次数

我可以使用'eval'在Python中定义一个函数吗?

我想用eval定义一个Python函数:

func_obj = eval('def foo(a, b):  return a + b')
Run Code Online (Sandbox Code Playgroud)

但它返回无效的语法错误?我该怎么做?

顺便问一下,如何在Python中将函数obj转换为字符串对象?

python eval python-2.7

7
推荐指数
2
解决办法
3335
查看次数

你如何读取lambda函数作为字符串?

在创建它之后,我想读一个我创建为字符串的lambda函数.

例如,

func = lambda num1,num2: num1 + num2
Run Code Online (Sandbox Code Playgroud)

我想把func读作:

'lambda num1,num2: num1 + num2'
Run Code Online (Sandbox Code Playgroud)

有没有办法完成这个甚至读取lambda函数的任何部分?

python string lambda function

7
推荐指数
2
解决办法
5316
查看次数

如何在python中将字符串转换为源代码?

如您所见,ifinner 是一个字符串,所以如果我只写在 if 之后,总是为真。我能做什么,将它与源代码协调一致?

    x=2
    ifinner = "x==3"
    if ifinner:
        print("Yeah")
    else:
        print("It works!")
Run Code Online (Sandbox Code Playgroud)

python string command eval

3
推荐指数
1
解决办法
1万
查看次数

如何在python中将字符串转换为变量

如何在python中将'a = b = 2'字符串转换为a = 2,b = 2?

有一些python解析器为2 + 3 + 4等表达式提供输出.

但是如何将'a = b = 2'字符串用作变量a = 2 b = 2

python

0
推荐指数
1
解决办法
6702
查看次数

获得字符串的结果?

好吧,我们说我有一个字符串 s = '5 + 7'

是否有可能得到这个字符串的结果?(应该是12)

我试过用,int(s)但会出错

python

0
推荐指数
1
解决办法
94
查看次数

如何在python中将字符串转换为python代码?

如果我在 python 文件中有一个包含一些代码的字符串。我想在字符串中运行代码,例如:

program = "for i in range(100):\n\tprint(i)"
eval(program)
Run Code Online (Sandbox Code Playgroud)

但是,我很确定 eval 仅适用于数学运算,因此会引发语法错误:

Traceback (most recent call last):
  File "main.py", line 2, in <module>
    eval(program)
  File "<string>", line 1
    for i in range(100):
      ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

python中有没有办法运行包含在字符串中的代码?

python

0
推荐指数
1
解决办法
585
查看次数

使用 Python3 在 Python 代码中执行 Python 字符串

如果我的 Python 代码中有一个如下所示的 srting:

x = "print('Hello World')"
Run Code Online (Sandbox Code Playgroud)

我想像执行一个单独的 .py 文件一样执行它。有没有类似的东西

execute(x)
Run Code Online (Sandbox Code Playgroud)

python python-3.x

0
推荐指数
1
解决办法
70
查看次数