Python 检查条件是否匹配多个变量
我有一个方法/函数,它传递了几个可能没有值的变量。我如何检查所有变量的无值,并以最具Python风格的方式将其替换为字符串 示例代码:Python 检查条件是否匹配多个变量,python,python-2.7,conditional,Python,Python 2.7,Conditional,我有一个方法/函数,它传递了几个可能没有值的变量。我如何检查所有变量的无值,并以最具Python风格的方式将其替换为字符串 示例代码: def logData(self, var1=None, var2=None, var3=None): if var1 is None: var1 = "---" if var2 is None: var2 = "---" if var3 is None: var3 = "---"
def logData(self, var1=None, var2=None, var3=None):
if var1 is None:
var1 = "---"
if var2 is None:
var2 = "---"
if var3 is None:
var3 = "---"
# what I would prefer / pseudo code:
if list(var1, var2, var3) is None:
list[1] = "---"
您可以通过使用
**kwargs
实现这一点:
def logData(self, **kwargs):
for key,value in kwargs.iteritems():
if value is None:
# do assignment ...
使用元组解包:
var1, var2, var3 = ['---' if (x is None) else x for x in (var1, var2, var3)]
@markrages这个检查通常是在变量为mutabe时添加的,我认为对于整数它是不需要的。。。但是,是的,这样我无法处理0,条件应该更改为类似于superjump回答中的某个条件。我对这种方法不熟悉,你能准确地解释一下每一步的作用吗?@DominicM
a或'-'
:。Requires是元组解包和列表理解。你能用同样的方式调用函数,单独传递参数吗?对我来说似乎很复杂,你能解释一下吗?@DominicM这里有一个简单的元组解包示例:#将var1设置为1,var2设置为2,var3设置为3,var1,var2,var3=1,2,3#现在假设调用函数时使用参数#var1==0、var2==None和var3=5,下面的列表是:@DominicM。哎呀,我还没学会评论。我想说的是,答案中的list comp迭代传递给函数的值(var1、var2、var3),如果其中任何值None
将它们替换为“---”,否则它们将保持不变。此外,列表comp的计算结果为三个值,这些值依次分配给左侧的变量名,在本例中为var1、var2、var3。在向答案添加更多信息时,编辑答案可能更合适。
var1, var2, var3 = (a or '---' for a in [var1, var2, var3])