python变量和对象
在python程序里,可以通过初始化(或提供实参)给变量约束一个值,还可以通过赋值修改变量的值.这里的值就是对象.给变量约束一个对象,就是把对象的表示(内存地址)存入该变量.所以从变量出发访问其值得是常量时间操作,这是在python里分析程序的时间代价的基础.
Python变量的值都是对象,可以是基本整数,浮点数等类型的对象,也可以是组合类型的对象,比如list.程序中建立和使用各种复杂对象,包括python函数等,都基于独立的存储快技术实现,通过链接相互关联.程序里的名字(变量,参数,函数名)关联着作为其值得对象,这种关联可以用赋值操作改变.
python语言中变量的这种实现方式成为变量的引用语义**,在变量里保存值(对象)的引用**.采用这种方式,变量所需的存储空间大小一致,因为其中只需要保存一个引用.有些语言采用的不是这种方式,它们把变量的值直接保存在变量额存储区里,称为值语义.这样一个整数类型的变量就需要保存一个整数所需的空间,一个浮点数变量就需要足够的空间存储一个浮点数,如果一个变量中需要保存很大的数据对象,它就需要占据更大的存储空间.例如C语言采用的就是变量的值语义.
抽象数据结构
class Rational:
# 求最大公约数
@staticmethod
def _gcd(m, n):
if n == 0:
m, n = n, m
while n != 0:
m, n = n, m % n
return m
def __init__(self, num, den):
# 获得最简分数
if den == 0:
raise ZeroDivisionError
if not isinstance(num, int) or not isinstance(den, int):
raise TypeError
sign = 1
if num < 0:
num, sign = -num, -sign
if den < 0:
den, sign = -den, -sign
g = Rational._gcd(num, den)
self._num = sign * (num // g)
self._den = den // g