在python中的Python中制作函数时出错

时间:2018-09-01 17:34:12

标签: python python-3.x exec eval

我已经编写了代码。就像我们运行原始的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)
>>> 

2 个答案:

答案 0 :(得分:1)

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

另一方面,如果您将某些内容放在if语句之后会起作用(例如if True: print("true")),但是您不能像尝试这样做那样将if语句依次链接在一起。但是,您可以链接诸如if True:print("first line");print("second line")之类的普通语句。

功能也有同样的问题。他们必须先在定义之后加上一条声明,然后才能解释,通常,您将被允许在函数被读取之前键入该定义。

您可以更改代码以允许这种行为,这样,如果一行以:结尾,则应继续读取输入,并仅在输入空行后才执行输入。

答案 1 :(得分:0)

如果语句至少需要2行(带有缩进),则评估函数将评估一行代码。尝试lambda表达式

lambda x: True if a == True else False