Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您能用python返回表达式的值吗,比如C++;?还是不_Python - Fatal编程技术网

您能用python返回表达式的值吗,比如C++;?还是不

您能用python返回表达式的值吗,比如C++;?还是不,python,Python,我有点困惑,我会感激这样的即时解决方案,这对我来说是非常好的。出于某种原因,此代码 def process(self, command): return (command == "Quit" or "quit" or "Q" or "q") 。。。在我的程序中生成与此相同的输出 def process(self, command): return True 什么??但是,此代码的性能与我期望的一样: def process(self, command): return

我有点困惑,我会感激这样的即时解决方案,这对我来说是非常好的。出于某种原因,此代码

def process(self, command):
    return (command == "Quit" or "quit" or "Q" or "q")
。。。在我的程序中生成与此相同的输出

def process(self, command):
    return True
什么??但是,此代码的性能与我期望的一样:

def process(self, command):
    return (command == "Quit")

有人能帮忙吗?

让我们把这个问题稍微分开一点:

>>> command = 'foo'
>>> command == "Quit" or "quit" or "Q" or "q"
'quit'
这是因为
运算符的工作方式。它查找第一个类真值并返回它。如果没有找到,则返回
False

此处的命令解析为:

((((command == "Quit") or "quit") or "Q") or "q")
因此,从左到右进行解析,如果
命令
不等于
“退出”
,则您有:

(((False or "quit") or "Q") or "q")
但在这里,
“quit”
是一个非空字符串,因此python将其视为“True like”,因此返回的是它


现在我们知道了为什么它不起作用,让我们看看如何修复它:

这样做的标准方法是在支持它的某个对象上使用
in
操作符:

def process(self, command):
    return command in ("Quit","quit","Q","q")

元组很好(它们的性能比列表更好)。但是,如果您要反复使用它,
集合将以最快的速度运行,前提是您可以避免反复构建它。

让我们把它分开一点:

>>> command = 'foo'
>>> command == "Quit" or "quit" or "Q" or "q"
'quit'
def process(self, command):
    return command in ("Quit" , "quit" , "Q" , "q")
这是因为
运算符的工作方式。它查找第一个类真值并返回它。如果没有找到,则返回
False

此处的命令解析为:

((((command == "Quit") or "quit") or "Q") or "q")
因此,从左到右进行解析,如果
命令
不等于
“退出”
,则您有:

(((False or "quit") or "Q") or "q")
但在这里,
“quit”
是一个非空字符串,因此python将其视为“True like”,因此返回的是它


现在我们知道了为什么它不起作用,让我们看看如何修复它:

这样做的标准方法是在支持它的某个对象上使用
in
操作符:

def process(self, command):
    return command in ("Quit","quit","Q","q")

元组很好(它们的性能比列表更好)。但是,如果您要反复使用它,
集合将以最快的速度运行,前提是您可以避免反复构建它。

您期望的是什么?在C++中你也不能这么做。你需要
command==“Q”或command==“Q”…
command在('Quit'、'Quit'、'Q'、'Q')中是
command吗
你想做什么?问题名称与描述有什么关系?很明显,您是在
return(command==“Quit”)
中返回表达式的值,所以……您真的对此感到困惑吗?这似乎是有条件的,或者更像是精神分裂症。我现在想更改问题的名称,但这似乎是多余的。你期待什么?在C++中你也不能这么做。你需要
command==“Q”或command==“Q”…
command在('Quit'、'Quit'、'Q'、'Q')中是
command吗
你想做什么?问题名称与描述有什么关系?很明显,您是在
return(command==“Quit”)
中返回表达式的值,所以……您真的对此感到困惑吗?这似乎是有条件的,或者更像是精神分裂症。我现在想更改问题的名称,但这似乎是多余的。
def process(self, command):
    return command in ("Quit" , "quit" , "Q" , "q")