我有这段代码:
p = "string", "string2"
s = None
if p != None or s != None:
r = p + s
如果这两个条件中的一个不是p+s
,我想执行None
。但我得到一个连接错误:TypeError: can only concatenate tuple (not "NoneType") to tuple
我会试着更清楚。我在3D应用程序中使用python。因此变量用于存储一些3D对象的名称。 P表示多边形对象,S表示nurbsSurface对象。在某些情况下,在3D场景中可能不存在这些对象中的一个。所以变量返回None。我需要在变量R中存储S或P或两者。
答案 0 :(得分:2)
从各种评论来看,您似乎更喜欢以下内容:
if p is not None or s is not None:
r = (p or ()) + (s or ())
可以使用if/else
表达式,但这个更简单的表达式就足够了。
仍然,对于我们中间的学生,
r = (() if p is None else p) + (() if s is None else s)
将是一个完全编码的变体。
答案 1 :(得分:1)
Python不允许您连接无组的元组。
在你的例子中变量" s"是None,因此行r = p + s
会给出连接错误。您应该更改您的代码,如下所示:
p = "string", "string2"
s = None
if p and s:
r = p + s
elif p:
r = p
else:
r = s
答案 2 :(得分:0)
所以,我不确定execute p+s
的意思,但连接错误是完全合理的。
python
不允许向元组添加None。我的理解是你需要无缝地设置r p,s或两者:
注意:在误解后编辑,也使用一套解决方案,这似乎可能适合您的目的,因为您不需要重复,并且您没有表明订单很重要,它也允许对于我觉得稍微清洁的解决方案。
p = "string", "string2"
s = None
r = p or set() | s or set()
另外,根据您的解释,您似乎并不需要if语句,因为结果将始终包含其中一个。如果这不正确,请告诉我。