代码之家  ›  专栏  ›  技术社区  ›  Wes

根据存在的内容分配多个值中的一个

  •  0
  • Wes  · 技术社区  · 16 年前

    计算结果为true ,我将编写以下代码:

    $myVar = $var1 || $var2 || $var3;
    

    5 回复  |  直到 16 年前
        1
  •  3
  •   Noufal Ibrahim    16 年前

    Perl在第一次引用时“自动激活”变量(据我记忆所及)。Python将提出一个 NameError 如果变量不存在。但是,您可以这样做。

    var1 = var2 = var3 = None
    # code that might change the value of three variables mentioned above
    myvar = var1 or var2 or var3
    

    一般来说,检查是否定义了变量(并在此基础上更改控制流)在Python中是一件坏事。你应该使用字典和钥匙。

        2
  •  2
  •   danben    16 年前

    在Python中,我相信您可以这样说

    myVar = var1 or var2 or var3
    

    Python文档描述了 x or y 作为

    如果x为假,则y为假,否则x为假

    当前位置theatrus提出了一个有趣的观点-我甚至没有考虑到变量可能没有定义。我发现关于这个问题的讨论:

    定义,因为所有变量都是 预期之前已定义 “无”对象。试图访问 以前未使用过的变量

    Python不知道是否有一个变量 已经定义了。但是如果你 然而在这种情况下,, 您可以确保给定的 变量实际上已定义(无, (如果没有其他内容)通过尝试 在“try”块中访问它,然后 应为其指定“无”对象 引发NameError异常。

        3
  •  1
  •   Anthony Forloney    16 年前

    在PHP中,您可以使用 isset() $var1 , $var2 $var3 设置,然后将值设置为 $myVar

    但要注意,这取决于您要设置的条件 $myVar 到,这将评估为真:

    $str = '';
    var_dump(isset($str)); // TRUE
    
        4
  •  1
  •   GZipp    16 年前

    $vars = array($var1, $var2, $var3);
    foreach ($vars as $var) {
        if ($myvar = $var) {
            break;
        }
    }
    

    或者,更确切地说:):

    foreach(array($var1,$var2,$var3)as$var)if($myvar=$var)break;
    
        5
  •  0
  •   jathanism    16 年前

    还有 conditional expressions 在Python 2.5中添加的Python中:

    x = true_value if condition else false_value
    

    我不能和PHP说话。

    两种语言都需要记住的一点是,试图计算一个不存在的变量总是会抛出一个错误。使用Python,您可以通过捕获 NameError

    >>> try: 
    ...     myVar = var1 or var2 or var3
    ... except NameError:
    ...     myVar = 'default'
    ... 
    >>> myVar
    'default'
    

    var1 , var2 var3 myVar 将收到“默认”的回退值。否则,您将获得该集的任何一个var的值 True