ExASIC
分享让工作更轻松

python的数据类型(二):数字

上一次我们讲了python数据类型的“数字”和“字符串”,了解了数字和字符串的定义。今天我们来深入学习数字的基本操作方法。

四则运算

数字的基本操作是加、减、乘、除四则运算。例如下面的脚本:

#!/usr/bin/env python
a = 10
b = 2
c = a + b
d = a - b
e = a * b
f = a / b
print(c)
print(d)
print(e)
print(f)

结果输出:
12
8
20
5.0

从这个例子我们可以看出,四则运算跟我们想像的差不多,很接近C++语言。但除法有点特殊,结果是5.0而不是5。这是因为python在进行除法运算时,默认会作带小数的除法运算,即使被除数和除数都是整数。

整除

那如果一定需要整除该怎么办呢?python还提供了专门的整除运算符//,例如:

a = 10 // 2
b = 10 // 3
c = 10 // 3.0
print(a)
print(b)
print(c)

结果输出:
5
3
3.0

从这个例子可以看出,//运算符相当于取/运算符结果的整数部分,直接把小数部分给舍掉。但是当被除数或除数带小数时,//的结果也带小数部分,这个时候与/相同。

当然我们还有一种方法,利用int()做类型转换,把小数转成整数。如:

a = int(10/3)
print(a)

理解数字四则运算符的本质

我们这里讲的四则运算符+ - * /本质上是运算符重载。怎么讲?我们知道数字是对象,两个对象进行加减乘除必然要通过运算符重载来实现。

我们来看两个例子。

例子一:
a = 10
b = 2
c = a + b
print(id(a))
print(id(b))
print(id(c))

结果输出:
9323424
9323168
9323488

这个例子中,我们分别打印了a, b, c三个对象的ID,三个ID均不相同。

例子二:
a = 10
print(id(a))
a = a + 2
print(id(a))

结果输出:
9323424
9323488

这个例子,我们在加法前后打印了两次对象a的ID,两次ID并不相同。

这是因为python语言里的数字对象一但初始化,就不能更改了,类似C++语言的const常量。当执行c = a + b时,大致经过下面这几步:

  1. 取出对象a的值,取出对象b的值
  2. 两者相加,并赋值给一个临时对象
  3. 把c指向这个新的临时对象

上面的例子一可用下图来表示:

ex1

上面的例子二可用下图来表示:

ex2

由于数字对象a是不可修改的,当a = a + b时,最终结果a其实是指向这个新创建的临时对象,而不是修改a指向的对象本身。

总结

我们再次强调python是面向对象的编程语言,所以在基础语法学习阶段我们会一直传递对象的思想。只有理解了一切皆对象,才能更熟练地使用python来编程。这一点与学习perl的方法完全不同,我们需要尽快调整过来。

下一次,我们学习数据类型"字符串"的操作方法,这是非常重要的部分哦!

阅读数:
更多文章:文章目录
解惑专区
(支持markdown插入源代码)
欢迎使用ExASIC订阅服务
仅用于ExASIC最新文章通知,方便及时阅读。
友情链接: IC技术圈问答ReCclayCrazyFPGA