python的对象与名字绑定 您所在的位置:网站首页 python名字没有被定义 python的对象与名字绑定

python的对象与名字绑定

2023-10-13 08:39| 来源: 网络整理| 查看: 265

i = 1

  这是一个再简单不过的赋值语句,即便是才开始学习编程的新手也能脱口而出它的含义 -- “设置变量i的值为1”。

i = 2

  “将变量i的值改为2”,当看到接下来这行代码时,你脑海中肯定会立即浮现这样的念头。

  这难道会有问题嘛?这简简单单的一行赋值语句其实包含了python中的三个重要概念:名字、绑定和对象。python对赋值语句作出了自己的定义:  “符值语句是用来将名字绑定(或重新绑定)到某个对象的操作,而且它也可用来修改可变对象的属性或对象中所包含的成员。”

  名字绑定到对象这个概念在python中随处可见,可以说是python的最基本而且最重要的概念之一。如果没有很好理解这一点,一些意想不到的结果就会在您的代码中悄然出现。

  先来看一个简单例子:

>>> a = {'g':1}>>> b = a*4>>> print b[{'g': 1}, {'g': 1}, {'g': 1}, {'g': 1}]>>> b[0]['g'] = 2>>> print b

  出乎意料嘛?请慢慢看完这篇文章。

1. 对象  “万物皆对象”(Everything is object),这是python这种面向对象语言所倡导的理念。在我们熟悉的C++中,1只是一个整型数,而不是一个对象。但在python中,1却是一个实实在在的对象,您可以用dir(1)来显示它的属性。

  在python中,所有对象都有下面三个特征: * 唯一的标识码(identity) * 类型 * 内容(或称为值)

  一旦对象被创建,它的标识码就不允许更改。对象的标识码可以有内建函数id()获取,它是一个整型数。您可以将它想象为该对象在内存中的地址,其实在目前的实现中标识码也就是该对象的内存地址。

>>> class c1: pass...>>> obj = c1()>>> obj>>> id(obj)11274040

  换算一下,11274040就是十六进制的0x00AC0738。

>>> id(1)7957136

  这就是前面提到的1这个对象的标识码,也就是它在内存中的地址。

  当用is操作符比较两个对象时,就是在比较它们的标识码。更确切地说,is操作符是在判断两个对象是否是同一个对象。>>> [1] is [1]  其结果是False,是因为这是两个不同的对象,存储在内存中的不同地方。

>>> [1] == [1]  其结果是True,是因为这两个不同的对象有着相同的值。

  与对象的标识码类似,对象的类型也是不可更改的。可以用内建函数type()取得对象的类型。

  有的对象的值是可以改变的,这类对象叫作可变对象;而另外一些对象在创建后其值是不可改变的(如1这个对象),这类对象叫作恒定对象。对象的可变性是由它的类型决定的,比如



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有