【问题标题】:What do the symbol "=" and "==" mean in python?符号“=”和“==”在python中是什么意思?
【发布时间】:2016-06-21 19:55:43
【问题描述】:

什么时候应该使用符号“==”,什么时候只有符号“=”就足够了? python中的符号'=='是什么意思?

我两周前开始使用 python 编码,这两个符号有时让我感到困惑。有几次当我使用'='时,我会收到一条错误消息。在我将其更改为“==”后,不再出现错误消息。当 '=' 起作用时,似乎 '==' 可以在任何情况下使用。这是真的吗?谁能解释一下这两个符号的使用原理?

非常感谢您的帮助!

【问题讨论】:

  • '=' 是赋值运算符,'==' 是比较运算符。
  • 您的教科书/教程应该涵盖这些非常重要的信息。您正在使用哪本书或教程?
  • 这个基本的问题更适合语言教程。你不应该在这里问基本的问题。
  • 令人惊讶的是,当我试图将其标记为欺骗时,我在 SO.. 中找不到任何欺骗。我错过了吗?
  • 对于使用= 表示相等和使用其他东西(:=)进行赋值的语言,有一些话要说。然而,这些语言是少数。

标签: python


【解决方案1】:

简单的答案是= 是赋值运算符,== 是比较运算符。而且你说== 可以在= 工作的任何情况下使用是错误的。例如,如果我想创建变量my_string 并将其设置为等于"something",我将使用= 运算符。

my_string = "something"

我正在使用该运算符将变量分配给一个对象。

如果我想像这样比较两个字符串(或其他数据类型):

if "something" == "nothing":
    #perform a function

我正在比较这两个字符串。

但是,如果我尝试使用 == 运算符分配一个变量来进行变量的初始分配,它将不起作用。如果它已经被分配,它会工作,但它不会像你期望的那样。例如:

my_string == "something"

将引发错误名称错误。

同样,如果您尝试使用= 运算符比较两个字符串(或其他数据类型),如下所示:

if "something" = "nothing":
    #perform a function

这将引发语法错误。

我希望这可以帮助您理解这个概念。编程愉快!

【讨论】:

  • my_string == "something" not 会抛出错误。你测试过吗?
  • 在什么代码中?我还没有找到它适用的任何东西。
  • 如果您尝试将my_string == "something" 分配为my_string 的初始分配。尝试在新的 python shell 中输入my_string == "something"
  • 一些错别字:asigning; through you an error -> throw you an error。虽然在 Python 中我们通常说异常是引发而不是抛出,但我想这只是一个小问题。但您可能想提一下,它引发了NameError,以及它为什么这样做。
  • 啊,我明白了。我同意 PM2Ring。错误是什么,错误发生的原因尚不清楚。
【解决方案2】:

== 是一个比较运算符,而= 将为所述变量赋值。

您可以使用== 来查看任何两个项目,只要它们是相同的类型,是否等价:

if a == 2: # Compares whether a is equal to 2
    print a

现在是这样。如果您正在比较任何两个这样的项目,则会弹出一个错误:

  • 整数字符串

  • 带字符串的整数

  • 字符串和浮点数

  • 浮点数和字符串

浮点数和整数是可比较的,因为它们是数字,但通常彼此不相等,除非浮点数基本上是整数但在末尾添加了.0。使用==时,如果两项相同,则返回True。否则,它将返回False

您可以使用= 为变量赋值。使用== 要么什么都不做,要么抛出错误(如果变量未定义)。例如,您希望变量 hi 的值为 2。然后使用 =

hi = 2

现在 hi 等于 2。假设变量是整数或浮点数,您可以将 =+- 等操作结合起来:

hi += 1
hi -= 1

现在像上面一样使用+=-=,变量必须已经定义,因为这些操作符会直接改变变量的值。基本上,它们是这样的:

hi += 1 # is the same as hi = hi + 1
hi -= 1 # is the same as hi = hi - 1

因此,总而言之,它们的不同之处在于:

  • ==是一个比较运算符:返回True是两个项目相等,如果不是返回False,如果在定义之前分配变量并且如果两个项目不兼容则抛出错误

  • = 是一个赋值运算符:将字符串或数字等值赋给变量。当变量的值是一个数字并且已经定义时,可以以+= 之类的形式使用。

它们可以同时使用的唯一方法是它们可以在字符串中使用:

"hi = hello"
"2 == 3 probably returns False don't you think?" 

【讨论】:

    【解决方案3】:

    =assignment 运算符,用于assign 给变量赋值:

    A = 67 #this is called assignment. With this, A has a value of 67
    

    ==comparison 运算符,用于比较 一个项目与另一个项目,看它们是否相等。它导致 truefalse

    A == 65 #Is A equal to 65? This does NOT assign A to 65. If A was previously assigned as 67, it still retains its 67 value
    

    【讨论】:

      【解决方案4】:

      区别在于name = value 告诉 Python name 现在等于value。另一方面,name == value 正在 询问 Python,如果 name 等于 value。有些地方你不能告诉 Python name 等于什么,但你可以问。例如,如果你想打印它:

      >>> x = 4
      >>> print x = 4
        File "<stdin>", line 1
          print x = 4
              ^
      SyntaxError: invalid syntax
      

      那是因为我们正在打印一些东西,但是x = 4 没有任何价值。有值的是x,所以我们想知道x是否等于4;我们不想告诉 Python 是这样。在这种情况下,你需要双 =:

      >>> x = 4
      >>> print x == 4
      True
      

      在任何可以使用=的地方,都可以使用==;但它会有不同的含义。例如:

      >>> x = 4
      >>> print x
      4
      >>> x == 4
      True
      

      x = 4 告诉 Python x 等于 4。没有其他内容显示,因为它只是一个命令。另一方面,x == 4询问x 是否等于4。当我们提出问题时,Python shell 会告诉我们答案,因此它会打印出True

      【讨论】:

        【解决方案5】:

        正如 MarkyPython 已经说过的。赋值意味着您使用= 将右侧的值分配给左侧的变量aa=10 意味着 a 等于 10 从这里开始。

        表达式a==10 测试变量a 是否等于10。此类测试的结果是布尔值(真或假)。此类测试通常用于if...then 决策。

        a=10            # a is assigned the value of 10, and per duck-typing the type integer
        print a         # --> 10
        print type(a)   # --> int
        
        print a==10     # --> True 
        print a==11     # --> False
        
        if a==10:            # if the condition is True
            do something
        else: 
            do something else
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-29
          • 2015-02-13
          • 1970-01-01
          • 2013-06-29
          • 2020-06-05
          • 2011-04-18
          • 2011-04-07
          • 2014-05-11
          相关资源
          最近更新 更多