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的新手,我觉得我缺少一个细微差别。
谢谢!
答案 0 :(得分:3)
打印 与 退回 不同。根据文档,exec 总是返回None
:
[...]返回值为
None
。
使用类似eval的方法也无济于事,因为您的行也计算为None
(我重复: printing 与不同返回)
如果您想实际捕获正在打印的内容,请查看this other SO question
如果您要实际上是返回而不是 print ,则相应地更改行:
line4 = "issubclass(C,A) and issubclass(C,B)"
然后使用eval:
myValue = eval(line4)
# myValue = False
答案 1 :(得分:-1)
您想要用eval而不是exec,至于您为什么这样做,我无法理解,但不会询问:(而且您的line4永远不会评估为布尔值,因为它是打印内容,也不会返回任何值):< / p>
line4 = 'myList = [str(issubclass(C,A) and issubclass(C,B))]'
执行第一行以创建您的类,然后执行eval line4: 对于某些原因列表的理解未分配,因此:
exec(line1)
exec(line2)
exec(line3)
exec(line4)
myList
出局[44]:['假']