原标题:Sargent的量化经济学(8):Python工作原理
许文立 武汉大学经济与管理学院 xuweny87@163.com
许坤 安徽大学经济学院 kunxu2014@126.com
Python的工作原理:数据、变量和名称
概览
本讲的目标是更深入理解Python的执行模块
理解这些细节有助于我们将来编写更大规模的程序
你也可以跳过这些内容,进入应用部分
我们提供这些内容主要是为了提供一份参考资料,让你们能偶尔返回来看看这些内容,进而提升你们的Python技术
载体
在前面几讲,我们简要地讨论过载体
载体通常被认为是类的定义,且与数据和方法(函数)想结合
例如
创建了一个list,拥有不同的方法(append,pop,等)
Python里储存的每一项都是一个载体
这不仅包括list,字符等,还包含一些隐含的东西,例如
函数(只要它们读入内存)
模块(ditto)
为读写而打开的文件
整数,等
在Python中,载体就是由计算机内存中的数据和指令所组成的集合,它们是由下列事项构成:
一种类型
一些内容
唯一的识别符
零或一些方法
这些概念将会在下面的内容中呈现
类别
Python理解和支持不同类别的载体,以适应不同类型的数据
一种载体类型是通过type(object_name)来定义
例如
载体的类别对许多表达式有重要影响
例如,两个字符之间的加号表示串联
另一方面,两个数值之间的加号表示正常的加法
试试看下面的表达式
这是一种混合表达式,但是Python并不理解用户想要做什么
把’300’转换整数,然后与400相加,或者
把400转换成字符,然后与’300’串联
其他一些语言可能会猜用户的意图,但Python则强烈依赖于类别
类别很重要,隐性类别转换很罕见
Python会出现TypeError作为回应
为避免这种错误,你需要清晰声明类别
例如
内容
载体的内容似乎是一种很明确的概念
例如,如果我们设立x=42,然后x的内容就是数值42
但是,事实上,它的含义要丰富得多,正如下面的例子所示
当Python创建整数载体时,它会储存额外信息——例如,虚部——和类别
正如前面讨论的,下面所有带圆点的名称都被称为载体的属性
例如,imag和__class__是x的属性
识别符
在Python中,每一个载体都有唯一的识别符,这会帮助Python(和我们)追踪载体
载体的识别符通过id()函数赋予
在该例中,y和z有相同的值(例如,2.5),但是它们并没有相同的载体
载体的识别符事实上就是内存中载体的地址
方法
正如前面论述过,方法是捆绑在载体上的函数
正式来说,方法是载体的属性
方法对包含在载体中的数据起作用
大量的Python函数都是以方法调用的形式出现
例如,考虑下列代码
事实上,Python中称为__setitem__方法,如下
更多内容,可参见https://lectures.quantecon.org/py/python_foundations.html返回搜狐,查看更多
责任编辑: