原标题:Sargent的量化经济学(8):Python工作原理

许文立 武汉大学经济与管理学院 xuweny87@163.com

许坤 安徽大学经济学院 kunxu2014@126.com

Python的工作原理:数据、变量和名称

概览

本讲的目标是更深入理解Python的执行模块

理解这些细节有助于我们将来编写更大规模的程序

你也可以跳过这些内容,进入应用部分

我们提供这些内容主要是为了提供一份参考资料,让你们能偶尔返回来看看这些内容,进而提升你们的Python技术

载体

在前面几讲,我们简要地讨论过载体

载体通常被认为是类的定义,且与数据和方法(函数)想结合

例如

556eebf7f6b5edbe50ad8c06efa2d424.png

创建了一个list,拥有不同的方法(append,pop,等)

Python里储存的每一项都是一个载体

这不仅包括list,字符等,还包含一些隐含的东西,例如

函数(只要它们读入内存)

模块(ditto)

为读写而打开的文件

整数,等

在Python中,载体就是由计算机内存中的数据和指令所组成的集合,它们是由下列事项构成:

一种类型

一些内容

唯一的识别符

零或一些方法

这些概念将会在下面的内容中呈现

类别

Python理解和支持不同类别的载体,以适应不同类型的数据

一种载体类型是通过type(object_name)来定义

例如

7ab4bb32d2cf2ceefe2c79569f16d552.png

载体的类别对许多表达式有重要影响

例如,两个字符之间的加号表示串联

b14032ce1ba65dceb9080a59d78bd68d.png

另一方面,两个数值之间的加号表示正常的加法

bab4e5e1302481625cf8f5bfca5628ea.png

试试看下面的表达式

这是一种混合表达式,但是Python并不理解用户想要做什么

把’300’转换整数,然后与400相加,或者

把400转换成字符,然后与’300’串联

其他一些语言可能会猜用户的意图,但Python则强烈依赖于类别

类别很重要,隐性类别转换很罕见

Python会出现TypeError作为回应

9afcc632bfb81a1dd28a52f3a46652e1.png

为避免这种错误,你需要清晰声明类别

例如

4a80b5e9d10e21c220ba1d9a55948764.png

内容

载体的内容似乎是一种很明确的概念

例如,如果我们设立x=42,然后x的内容就是数值42

但是,事实上,它的含义要丰富得多,正如下面的例子所示

44a557756a7a8f2397e8cbbf501c9a74.png

当Python创建整数载体时,它会储存额外信息——例如,虚部——和类别

正如前面讨论的,下面所有带圆点的名称都被称为载体的属性

例如,imag和__class__是x的属性

识别符

在Python中,每一个载体都有唯一的识别符,这会帮助Python(和我们)追踪载体

载体的识别符通过id()函数赋予

332498120d8d04877747e5b97852554b.png

在该例中,y和z有相同的值(例如,2.5),但是它们并没有相同的载体

载体的识别符事实上就是内存中载体的地址

方法

正如前面论述过,方法是捆绑在载体上的函数

正式来说,方法是载体的属性

5b07f61a849f20b4a73e1f7b9ed15afa.png

方法对包含在载体中的数据起作用

4b358f69fcbf4a0dfb3efb8780e22d79.png

大量的Python函数都是以方法调用的形式出现

例如,考虑下列代码

982ea83ea4e7fe7e5bf70d0bd6b0010c.png

事实上,Python中称为__setitem__方法,如下

6220a27f0e3afad538ce544bf1cdf282.png

更多内容,可参见https://lectures.quantecon.org/py/python_foundations.html返回搜狐,查看更多

责任编辑:



版权声明:本文为weixin_39596668原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_39596668/article/details/113515121