Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 检查条件是否匹配多个变量_Python_Python 2.7_Conditional - Fatal编程技术网

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 = "---"

我有一个方法/函数,它传递了几个可能没有值的变量。我如何检查所有变量的无值,并以最具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 = "---"

    # 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])