Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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 “的含义;如果x==”#&引用;或不是x:“;_Python_Esri - Fatal编程技术网

Python “的含义;如果x==”#&引用;或不是x:“;

Python “的含义;如果x==”#&引用;或不是x:“;,python,esri,Python,Esri,所以我在阅读一些代码,我遇到了这个语句。在本例中,“x”是用户输入,所以我假设它是某种形式的验证,但它做什么呢?x==不是x没有任何意义,“#”是什么意思 下面是令人不快的代码块: def main(*argv): try: #Get FC and Fields inputFC = arcpy.GetParameterAsText(0) if inputFC =="#" or not inputFC: inputFC = "Tooldata\\Input

所以我在阅读一些代码,我遇到了这个语句。在本例中,“x”是用户输入,所以我假设它是某种形式的验证,但它做什么呢?x==不是x没有任何意义,“#”是什么意思

下面是令人不快的代码块:

def main(*argv):
try:

    #Get FC and Fields
    inputFC = arcpy.GetParameterAsText(0)
    if inputFC =="#" or not inputFC:
        inputFC = "Tooldata\\InputFC" # provide a default value if unspecified
inputFC==“#”或not inputFC
是一个包含两部分的布尔表达式:

  • inputFC==“#”
    –检查
    inputFC
    是否等于字符串
    “#”
  • not inputFC
    –检查
    inputFC
    是否为非真,这意味着它不是空的(即空的)

  • 使用
    运算符组合这两个条件,因此只需匹配一个条件即可使整个表达式的计算结果为true。

    将其读取为
    if(x==y)或not x
    ,而不是
    if x==(y或not x)
    。基本上,如果输入是磅/哈希符号或输入为null(Python中无),然后,条件将计算trueas@Kevin指出的值,它首先测试输入是否为散列,如果不是,则测试or的另一端,以查看其中是否没有任何内容。为了提高效率,这两个测试实际上应该颠倒,特别是如果你有一个很长的ors链的话。测试inputFC是否为“#”,如果它首先是空的,则没有意义。@rfj001,它不仅仅是
    None
    它是任何虚假的值,如空字符串、列表等。@padraiccnningham-Oh-true。忘记了在python中空字符串的计算结果为False不意味着它是空的吗?没问题。为了以防万一,我不得不把它说成一个问题。当试图解释双重否定时,尤其是在或/和类型上下文中,双重否定常常会令人困惑:)