2.3.3 表达式

本节目标:

  • 理解表达式,掌握表达式求值的方法

我们创建一个小海龟对象

t1 = turtle.Turtle()

这个小海龟对象(可以理解为它的属性)被存在了内存中,通过id(t1)我们可以看到这个对象的唯一身份标识,这个对象被储存在内存的id(t1)这个位置(严格来讲,只有CPython是这样)。 而t1则是这个对象的一个代号,当我们再写t1的时候,Python就会知道,t1是之前创建的小海龟对象。

如果我们忘记加括号

t1 = turtle.Turtle

那么就是把turtle.Turtle这个类赋值给了t1,当我们再写t1的时候,得到的是turtle.Turtle这个类。 即t2 = turtle.Turtle()t2 = t1()变成一个意思了。

这体现了Python中“一切皆对象”的理念,大家都是平等的。

但之前提到关键字不是对象,所以,妄想

t1 = import # 不行
t1 turtle # 不行不行不行

是不行的。因为import不是对象。

反过来,

turtle.Turtle = 42

是合乎Python语法的。 但这样做之后,

t1 = turtle.Turtle()

就相当于

t1 = 42()

这是错误的。

能求得结果的就是表达式,比如表达式42的结果是421+1*1/1的结果是2.0[i ** 2 for i in range(10)]的结果是一个list,这个list里面包含10个int类型的对象。

我们可以写

t1.fd(42)

前进42步。

也可以写

t1.fd(21 * 2)

这时,Python会先计算出21 * 2的结果。

更复杂(无聊)一点,

f1.fd(range(100)[42])

也是一样的。

Last updated