动态类型以及它提供的多态性,无疑是Python语言简洁性和灵活性的基础。

 

一、变量

<1>变量创建

一个变量a。当代码第一次给它赋值时就创建了它,之后的赋值将会改变已创建的变量名的值。

<2>变量类型

变量永远不会有不论什么的和它关联的类型信息或约束。变量原本是通用的。它仅仅是在一个特定的时间点,简单的引用了

一下特定的对象而已。

<3>变量使用

当变量出如今表达式中。它会立即被当前引用的对象所替代(对象是有类型的)。此外全部的变量必须在使用前明白的

赋值,使用未赋值的变量会错误发生。

 

总而言之。变量在赋值时才创建。它能够引用不论什么类型的对象,而且必须在引用前赋值。

比如  a = 3

会经历三个步骤:

<1>创建一个对象来代表值3

<2>创建一个变量a

<3>将变量与新的对象相连接

 

因此可得

对象是分配的一块内存。有足够的空间去表示它们所代表的值。

变量是一个系统表的元素,拥有指向对象的连接的空间。

引用是自己主动形成的从变量到对象的指针。

 

 

二、类型属于对象。而不是变量

对一个变量多次赋值得,

>>> a = 3

>>> a = 'hello'

>>> a = 3.1415

由此可见变量名是没有类型的,而类型是属于对象的。

我们对a的改动仅仅是让它成为不同对象的引用。

对象是有类型

的。整数对象3包括值3以及一个头部信息,告诉python这是一个整数类型。

 

三、对象的垃圾收集

在python中,当一个变量名被赋予一个新的对象,之前的那个对象占用的空间就会被回收(假设它没有被其它变量引

用)。称为垃圾收集。

在内部python是这样来实现这一功能的:

它在每一个对象中保持了一个计数器,记录了当前指向该对象的引用的数目,一旦这个计数器的值为0,这个对象的内

存空间会自己主动回收。

这意味着不须要考虑内存释放等问题,省去大量的基础代码。

 

四、共享引用

例:

>>> a = 3

>>> b = a

此时a,b都成为对象3的一个引用,叫做共享引用。

>>> a = 'hello'

当a改变时。这时不会改变b的值,仅仅是a改动为'hello'的引用而已。

给变量赋一个新的值。不是替换了原始的变量,而是让这个变量去引用全然不同的还有一个对象,效果就像又一次赋值一

样,仅仅会影响被赋值的变量。

 

五、共享引用和原处改动

有一些对象和操作确实会在原处改变对象,比如之前写过的"Python<1>list",进行一些操作时不是生成一个新的对

象,而是直接改动了自身引用的对象,此时共享引用须要加倍小心。假设你不想要这种现象发生。须要python拷贝

对象。而不是创建引用。最常见的办法就是从头到尾的分片。

>>> L1 = L2[:]

此时对当中一个的改动不会影响还有一个。两个对象在不同的内存区域。

 

 

 

 

 

 

 

 

 

參考<<learning python>>

 

 

 

 

 

Python动态类型简单介绍的更多相关文章

  1. python动态类型

    在python中,省去了变量声明的过程,在引用变量时,往往一个简单的赋值语句就同时完成了,声明变量类型,变量定义和关联的过程,那么python的变量到底是怎样完成定义的呢? 动态类型 python使用 ...

  2. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  3. python+selenium之简单介绍继承

    python+selenium之简单介绍继承 一.此例简单的介绍一下继承 1.面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型 ...

  4. 【Python】python动态类型

    在python中,省去了变量声明的过程,在引用变量时,往往一个简单的赋值语句就同时完成了,声明变量类型,变量定义和关联的过程,那么python的变量到底是怎样完成定义的呢? 动态类型 python使用 ...

  5. python shutil模块简单介绍

    python shutil模块简单介绍 简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. shutil 模块方法: copy(src, ...

  6. Python -- Scrapy 框架简单介绍(Scrapy 安装及项目创建)

    Python -- Scrapy 框架简单介绍 最近在学习python 爬虫,先后了解学习urllib.urllib2.requests等,后来发现爬虫也有很多框架,而推荐学习最多就是Scrapy框架 ...

  7. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  8. python numpy 模块简单介绍

    用python自带的list去处理数组效率很低, numpy就诞生了, 它提供了ndarry对象,N-dimensional object, 是存储单一数据类型的多维数组,即所有的元素都是同一种类型. ...

  9. python paramiko 模块简单介绍

    背景,公司的很多服务包括数据库访问都需要通过跳板机访问,为日常工作及使用带来了麻烦,特别数python直接操作数据更是麻烦了,所以一直想实现python 通过跳板机访问数据库的操作. 首先了解到了 p ...

随机推荐

  1. 6-----selenuim和phantonJs处理网页动态加载数据的爬取

    动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding ...

  2. java——时间复杂度、动态数组

    O(n)不一定小于O(n^2),要具体来看,而我们说的这种时间复杂度其实是渐进时间复杂度,描述的是n趋近于无穷的情况. 动态数组的时间复杂度: 添加操作:O(n) addLast()的均摊复杂度为O( ...

  3. pdf.js使用爬过的坑

    最近项目里需要做一个在浏览器直接预览pdf的功能,有些浏览器可以直接预览pdf文件,但是有些不能(不要躲,说的就是你IE)查资料普遍推荐pdf.js,兼容能到ie9,很不错了. 1. 从pdf.js官 ...

  4. 使用Koa.js,离不开这十个中间件

    随着ES6的普及,async/await的语法受到更多JS开发者的青睐,Koa.js作为比较早支持使用该语法的Node框架越来越受到大家的喜爱,虽然Koa.js本身支持的功能很有限,但官方和社区提供了 ...

  5. TCP和UDP的区别以及各自应用

    TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是运输层的两个主要协议,均是互联网的正式标准. ...

  6. JobService 7.0 定时任务不生效

    代码 // 构建JobInfo对象,传递给JobSchedulerService JobInfo.Builder builder = new JobInfo.Builder(JOB_ID,new Co ...

  7. std::map Intro

    #include <queue>#include <map>#include <iostream>#include <string.h> class T ...

  8. fuser解决The requested resource is busy

    AIX 下出现umount busy | 处理  2011-08-17 17:22:57|  分类: AIX|字号 订阅如果一个文件系统打开了一个文件,那么必须在卸载之前将该文件关闭.例如:# umo ...

  9. Windows 10家庭版升级到专业版,系统蓝屏

    Log Name: SystemSource: Microsoft-Windows-DistributedCOMDate: 9/9/2018 7:56:57 PMEvent ID: 10016Task ...

  10. 《Flink 源码解析》—— 源码编译运行

    更新一篇知识星球里面的源码分析文章,去年写的,周末自己录了个视频,大家看下效果好吗?如果好的话,后面补录发在知识星球里面的其他源码解析文章. 前言 之前自己本地 clone 了 Flink 的源码,编 ...