【问题标题】:what's the difference between assign and bound when talking about variable?谈论变量时,assign和bound有什么区别?
【发布时间】:2013-09-06 03:35:32
【问题描述】:

http://www.stavros.io/tutorials/python/除外

# This swaps the variables in one line(!).
# It doesn't violate strong typing because values aren't
# actually being assigned, but new objects are bound to
# the old names.
>>> myvar, mystring = mystring, myvar

我不明白他的意思。

【问题讨论】:

    标签: python variables assign


    【解决方案1】:

    他的意思是说这两个变量是本质上交换的,而不知道它们的类型或像往常一样显式地使用中间变量。弱类型交换如下所示:

    temp = A
    A = B
    B = temp
    

    必须创建一个先前未初始化的临时变量temp 才能执行交换。但是,因为在第一次创建 temp 时没有指定类型,所以它违反了强类型。这是一个强类型交换:

    int temp = A
    A = B
    B = temp
    

    A, B = B, A 这样的交换不会违反强类型,因为不需要显式定义中间变量有或没有类型。它只是一个赋值操作,基本的赋值操作总是有歧义的类型(又名:A = B 是相同的,无论您使用的是强类型语言还是弱类型语言)。

    【讨论】:

      【解决方案2】:

      a=1 这样的赋值,从概念上讲,Python 将执行三个不同的步骤来执行请求。

      1.创建一个对象来表示值1

      2.创建变量a

      3.链接(或在链接中绑定)变量a 到新对象1

      在你的情况下,声明

      myvar, mystring = mystring, myvar

      会改变变量-对象的绑定关系。

      【讨论】:

        猜你喜欢
        • 2017-09-03
        • 2011-08-12
        • 1970-01-01
        • 2014-10-18
        • 1970-01-01
        • 2019-12-23
        • 2011-03-20
        • 2021-04-13
        • 2015-05-19
        相关资源
        最近更新 更多