python3我希望exec函数解析为lis中的字符串

2024-09-24 22:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

line1 = "class A:\n\tpass"
line2 = "class B:\n\tpass" 
line3 = "class C:\n\tpass"
line4 = "print(issubclass(C,A) and issubclass(C,B))"

exec(line1...4)结果是"False"按原样打印到控制台。你知道吗

但是,如果我当时:

myList = [str(exec(line4))]
print(myList)

myList中的字符串是"None",我希望它是控制台上打印的"False"。你知道吗

我试过aVariable = exec(line4),但这也打印“无”。你知道吗

欢迎任何帮助。你知道吗

我是Python的新手,我觉得我缺少了一些细微的差别。你知道吗

提前谢谢!你知道吗


Tags: and字符串nonefalseclassexecprintstr
2条回答

你想要eval而不是exec,至于你为什么要这样做,我不明白,但不会问:(而且你的line4永远不会计算为布尔值,因为它是一个也不会返回none的print):

line4 = 'myList = [str(issubclass(C,A) and issubclass(C,B))]'

执行第一行以创建类,然后执行评估行4: 由于某些原因,列表理解没有赋值,因此:

exec(line1)
exec(line2)
exec(line3)
exec(line4)

myList                                                                                                                                                                                           

输出[44]:['False']

打印与返回不同。根据文档,exec始终返回None

[...] The return value is None.

使用eval之类的方法也不会对您有帮助,因为您的行的计算结果也是None(我重复一下:打印与返回不同)

如果您想实际捕获正在打印的内容,请查看this other SO question


如果您希望实际返回而不是打印,则相应地更改您的行:

line4 = "issubclass(C,A) and issubclass(C,B)"

然后,使用eval

myValue = eval(line4)
# myValue = False

相关问题 更多 >