如何正确使用';是';用python
我对python很陌生。我有个问题如何正确使用';是';用python,python,Python,我对python很陌生。我有个问题 def set_man(self, new_pos): if new_pos is 'left' or 'right' or 'boat': self.man = new_pos return True else: return False 这样行吗?或者我是否需要为每个主题打电话询问新的位置?或者如果您想了解该主题,请参阅 如果您只想让代码按原样工作,请这样使用: def set_man(
def set_man(self, new_pos):
if new_pos is 'left' or 'right' or 'boat':
self.man = new_pos
return True
else:
return False
这样行吗?或者我是否需要为每个主题打电话询问新的位置?或者如果您想了解该主题,请参阅 如果您只想让代码按原样工作,请这样使用:
def set_man(self, new_pos):
if new_pos is 'left' or new_pos is 'right' or new_pos is 'boat':
self.man = new_pos
return True
else:
return False
如果要了解该主题,请参阅 如果您只想让代码按原样工作,请这样使用:
def set_man(self, new_pos):
if new_pos is 'left' or new_pos is 'right' or new_pos is 'boat':
self.man = new_pos
return True
else:
return False
这样行吗
不会的,因为你写的实际上是:
→ <代码>id(新位置)=id(“左”)→ 布尔值新位置为“左”
X
单独使用→ <代码>布尔('right')→ 始终“正确”
True
一个人→ <代码>布尔(“船”)→ 始终“船”
True
X或True或True
,其计算结果总是True
。因此,无论new\u pos
是什么,您的函数都将始终返回True,并将new\u pos
分配给self.man
或者我是否需要打电话询问每个或的新订单
这是一种方法:
if new_pos is 'left' or new_pos is 'right' or new_pos is 'boat':
但这有点冗长,也不是很优雅。写下它的更好方法是询问new\u pos
是否在元组中(“左”、“右”、“船”)
:
注:尽管我更喜欢在处理字符串时使用is
(因为如果用户输入为“yes”,它通常会生成类似的漂亮句子),但请注意这是is
操作符的一种异常行为
is
运算符用于匹配两个实例是否为同一实例(即内存中的同一对象),而=
运算符检查两个实例的值是否相同,并且=
运算符可由开发人员使用\uuuueq\uuuu
自定义行为来定义
这就是为什么is
操作符被称为“identity”操作符,而=
操作符是equality
操作符的原因。假设id()
操作符为一个实例提供了一个唯一的id:您可以将a is b
转换为id(a)==id(b)
。请阅读
这样行吗
不会的,因为你写的实际上是:
新位置为“左”
→ <代码>id(新位置)=id(“左”)
→ 布尔值X
“正确”
单独使用→ <代码>布尔('right')→ 始终True
“船”
一个人→ <代码>布尔(“船”)→ 始终True
X或True或True
,其计算结果总是True
。因此,无论new\u pos
是什么,您的函数都将始终返回True并将new\u pos
分配给self.man
或者我是否需要打电话询问每个或的新订单
这是一种方法:
if new_pos is 'left' or new_pos is 'right' or new_pos is 'boat':
但这有点冗长,也不是很优雅。写下来的更好方法是询问new\u pos
是否在元组(“左”、“右”、“船”)
:
注:尽管我更喜欢在处理字符串时使用is
(因为如果用户输入为“yes”,它通常会生成类似的漂亮句子),但请注意这是is
操作符的一种异常行为
is
运算符用于匹配两个实例是否为同一实例(即内存中的同一对象),而=
运算符检查两个实例的值是否相同,并且=
运算符可由开发人员使用\uuuueq\uuuu
自定义行为来定义
这就是为什么is
操作符被称为“identity”操作符,而=
操作符是equality
操作符的原因。假设id()
操作符为一个实例提供了一个唯一的id:您可以将a is b
转换为id(a)==id(b)
。请阅读了解更多信息。否。如果新位置为('left'、'right'、'boat')请尝试:
。哇,谢谢。那太快了!有两个原因不起作用。一个是由比我有更好的复制技能的人来显示。另一个是is
测试一个对象是否与另一个对象相同。也就是说,只有当它们在内存中的位置相同时,它才会给出True
。不过,你想要的是看看它们是否相等。如果新位置在(“左”、“右”、“船”):
我提到的第一个原因在帖子中演示。这是一个双重重复,我不小心收回了…:)不。尝试如果新位置在(“左”、“右”、“船”)):
。哇,谢谢。那太快了!有两个原因不起作用。一个是由比我有更好的复制技能的人来显示。另一个是is
测试一个对象是否与另一个对象相同。也就是说,只有当它们在内存中的位置相同时,它才会给出True
。不过,你想要的是看看它们是否相等。如果新的位置在(“左”、“右”、“船”):我提到的第一个原因在帖子中演示了。这是一个双重重复,我意外地收回了…:)我不认为在右侧添加不是无,并且船检查是合适的。空字符串和容器以及各种数字类型的零值在Python中也是“假”的,不仅仅是None
。也许用bool('left')
代替“left”不是None
?哦,我写的只是全英文的意思,不是python。这就是为什么我用反勾!但你是对的,让我详细说明一下真正正在做的事情。编辑,希望你会喜欢这样☺我不认为将添加到右侧
和船上
不是无