在Python中使用Python创建函数时出错

问题描述 投票:-2回答:2

我做了一个代码。它就像我们运行原始python一样。它使用evalexec。当我尝试在其中创建函数或任何if语句时,它不起作用。这是代码:

print("Python\n")
while True:
    command =input(">>> ")
    if command == "quit()":break
    try:
        try:
            eval(command)
        except:
            exec(command)
    except Exception as err:
        print("Exception: "+str(err))

运行:

Python

>>> a = input("Enter your name: ")
Enter your name: abc
>>> print(a)
abc
>>> if True:
Exception: unexpected EOF while parsing (<string>, line 1)
>>> if True:print(a);if a == "abc":print("Great Abc")
Exception: invalid syntax (<string>, line 1)
>>> 
python python-3.x exec eval
2个回答
1
投票

由于您一次只处理一行,如果您只编写if True:,python解释器会抛出错误。在普通的解释器中,这将触发多行编辑,并且只在您创建空行时才开始执行。

另一方面,如果你在if语句之后添加一些东西它会起作用(例如if True: print("true"))但你不能像你试图那样将if语句链接起来。但是你可以链接像if True:print("first line");print("second line")这样的正常语句。

功能也是同样的问题。在解释之前,它们需要在定义之后有一个语句,并且通常可以在函数被读取之前键入该定义。

你可以改变你的代码以允许这种行为,这样如果一行以:结尾,你应该继续读取输入,只有在输入空行后才执行它。


0
投票

Eval函数评估一行代码,if语句需要最少2行(带缩进)。尝试lambda表达式

lambda x: True if a == True else False
© www.soinside.com 2019 - 2024. All rights reserved.