【从零开始学Python】 第一课 Python 的动态类型介绍

Python 动态类型系统的复杂性 Python 是一种动态类型语言,这意味着变量在运行时才会确定类型,而不是像静态类型语言(如 Java、C++)那样,在编译时就明确类型。这种设计使得 Python 更加灵活和易于使用,但也引入了复杂性,尤其是在代码的复杂度和可维护性较高的场景中。 阅读详情

Python 的动态类型介绍

1.在Python中没有变量的声明以及变量的类型:

  • 变量的类型实在运行过程中自动决定的,而不是通过声明来决定的
  • 变量首次赋值时,创建它。之后的再次赋值会改变该变量的值

2.类型的概念是存在于对象中而不是变量名中。变量名是通用的,它只是在特定时刻引用某个特定的对象而已。

  • 当变量出现在表达式中时,它会马上被当前引用的对象所代替
  • 任何变量名在使用前必须明确地赋值。用未赋值的变量会产生错误。

在Python内部,变量实际上是指向对象内存空间的一个指针

graph LR
id1(变量名)-->|引用|id2(对象);
style id2 fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5;

3.每个表达式生成的结果,python都创建了一个新的对象去表示这个值

4.Python对象缓存了不变的对象并对其进行复用,如小整数和小字符串。但是逻辑上看,每个表达式的结果值都是不同的对象,占用不同的内存。

5.每个对象都有两个标准的头部信息:

  • 类型标志符:标识了该对象的类型(见第10条)

  • 引用计数器:决定了是否可以回收这个对象(见第8条)

    引用计数器记录了当前指向该对象的引用的数目。一旦它为0,
    则该对象的内存空间就会自动回收

6.给一个变量赋新值,并不是替换原始的对象,而是让这个变量去引用完全不同的一个对象。

7.多个变量名引用同一个对象时,称为共享引用:

graph LR
id1(变量a) -->|引用|id2(对象)
id3(变量b) -->|引用|id2(对象)
style id2 fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5;
  • 在共享引用中,对象的原地修改操作会影响到所有的引用该对象的变量

  • 共享引用的多个变量之间,is比较的结果为True

    ==操作符比较的是两个变量引用的对象是否具有相同的值

    is操作符比较的是两个变量是否引用的是同一个对象

8.sys模块的getrefcount函数会返回对象的引用次数,如:

这里可以看到Python对象缓存了不变的对象并对其进行复用

9.动态类型是Python多态的基础,因为没有类型约束。Python的多态是x.method的方法运行时,method的意义取决于x的类型,属性总是在运行期解析

10.查看对象的类型用type()函数,如:

11.Python提供了几种方法来查看对象的属性以及详细信息:

  • dir(x):查看x所指对象的属性
  • help(x.attr):查看x所指对象的attr属性
  • help(x):查看x所指对象的详细信息

12.None对象是一个特殊的Python对象,它总是False,一般用于占位。它有一块内存,是一个真正的对象。它不代表未定义,事实上它有定义。

  • None是所有函数和方法的默认返回值

13.Python中,任何东西都是对象类型(见第10条),类型本身也是对象类型:

  • type(x)返回变量x指向对象的类型
  • isinstance(x,typename)用于测试x所指对象是否是typename类型
  • 调用类型名是对这些对象构造函数的调用,而不仅仅是类型转换

14.基本上在代码中进行类型检查是错误的,着破坏了代码的灵活性,限制了代码的类型。Python代码不关心特定的数据类型,只关心接口,这就是Python的多态设计

  • 一个操作的意义取决于被操作对象的类型。同样的操作对不同的对象来说意义可能不同,前提是该对象支持该操作
  • 若对象不支持某种操作,则Python会在运行时检测到错误并自动抛出一个异常

15.Python可以在旧版本中开启新版本的特性,只需用在模块文件中使用:
from __future__ import 特性名

下一篇将会分享《数字类型》

想提前获取最新教程吗?可添加我助理微信获取最新资源信息。扫描下方二维码添加即可

Python 动态类型让代码更灵活 动态类型不是“无类型”,而是“类型随需而变”的智慧。它让Python像一把“瑞士军刀”,在快速迭代的场景中得心应手;而类型提示的加入,又让它能“升级”为精密工具,应对更复杂的工程需求。会驾驭这种灵活性,你就能真正释放Python的潜力!✨。 阅读详情

相关推荐

【GeoDa实用技巧100例】024:geoda计算全局(局部)莫兰指数Moran‘s I,LISA聚类地图,显著性地图

【GeoDa实用技巧100例】024:geoda计算全局(局部)莫兰指数Moran's I,单变量莫兰指数,双变量莫兰指数计算,LISA聚类地图,显著性地图,Geoda双变量莫兰指数是一种强大的地理空间数据分析工具。

智慧空间实验室 5974

Python库 | stroke-2.3.1-py3-none-any.whl

资源分类:Python库 所属语言Python 资源全名:stroke-2.3.1-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

jacke121的专栏 2737

python动态类型

最近关注着python,越来越喜欢它了。下面是我看python习手册习到的理论,给大家分享一下: 如果你有静态编译类型语言c,c++,java的背景,你也许有些困惑。我们在使用变量时,都没有声明变量的存在和类型,并且变量还可以工作。例如,在交互会话模式或是程序文件中,

chenjinyu的专栏 3483

python动态生成类&动态生成方法

python动态生成类&动态生成方法

喵酱 1293

Python分享之动态类型

我们看到,即使是多个引用指向同一个对象,如果一个引用值发生变化,那么实际上是让这个引用指向一个新的引用,并不影响其他的引用的指向。表实际上是包含了多个引用的对象(每个引用是一个元素,比如L1[0],L1[1]..., 每个引用指向一个对象,比如1,2,3),。而L1[0] = 10这一赋值操作,并不是改变L1的指向,而是对L1[0], 也就是表对象的一部份(一个元素),进行操作,所以所有指向该对象的引用都受到影响。通过赋值,引用a指向对象3。引用和对象的分离,对象是内存中储存数据的实体,引用指向对象。

240

Python动态类型介绍

变量的类型实在运行过程中自动决定的,而不是通过声明来决定的变量首次赋值时,创建它。之后的再次赋值会改变该变量的值2.类型的概念是存在于对象中而不是变量名中。变量名是通用的,它只是在特定时刻引用某个特定的对象而已。当变量出现在表达式中时,它会马上被当前引用的对象所代替任何变量名在使用前必须明确地赋值。用未赋值的变量会产生错误。在Python内部,变量实际上是指向对象内存空间的一个指针graph LRid1(变量名)-->|引用|id2(对象);

yygr的博客 486

【零基础Python动态类型、注释、输入与输出

动态类型使用起来更方便、更灵活,但这也导致了它可能会出现许多问题,所以动态类型也是有利有弊的。

weixin_51983604的博客 1397

python3 for beginner】python基础第一课

Python是一种高级、通用、解释型的编程语言简洁易读:Python采用简洁的语法和缩进风格动态类型Python是一种动态类型语言,变量的类型是在运行时确定的,不需要在代码中显式声明变量类型面向对象:Python支持面向对象编程,允许定义类和对象,并使用面向对象的概念如封装、继承和多态。模块化:Python支持模块化编程,允许将代码组织成模块和包,提高代码的复用性和可维护性。动态性:Python具有动态性,允许在运行时修改变量、类和函数等,使得开发过程更加灵活。

qq_42476938的博客 1277

从零开始Python自动化运维

自动化运维是指利用脚本和工具来自动化日常运维任务,如服务器配置、部署、监控、备份和恢复等。通过自动化,可以大大减少人工操作的错误,提高运维效率,快速响应问题。通过本篇文章,我们习了从零开始Python自动化运维的基本概念和实用技巧。从SSH登录和文件传输,到监控与报警,再到实战案例的自动化部署Web应用,我们一步步深入了解了Python在自动化运维中的强大功能。掌握这些技能,你将能够显著提升运维效率,快速响应问题,为企业的稳定运行保驾护航。

Candyz7的博客 1927

Python从零开始第一课

Python从零开始第一课 IDLE 常用快捷键 注意事项: 1、不要再程序中,行开头增加空格。空格在Python中有缩进的含义。 2、符号都是英文符号,不是中文。比如() () ...

colari的博客 211

跟我一起Python编程(一)

Python是一种高级、通用、解释型的编程语言,由Guido van Rossum于1991年开发。它的设计目标是提供一种易于阅读、易于理解和易于习的语法,使得初者和专业开发人员都能够使用Python编写有效而优雅的代码。Python使用缩进而不是大括号或分号来表示代码块,这增加了代码的可读性。它具有简单而一致的语法规则,以及丰富的内置函数和库,使得Python成为一种非常灵活和功能强大的编程语言Python支持面向对象的编程范式,并具有动态类型系统,这意味着变量的类型是在运行时确定的。

2401_86731670的博客 2606

windowspython_从零开始Python第一课:初识Python

原标题:从零开始Python第一课:初识Python从今天起,我们针对着手开始Python的小白,整理了一套系统的教程,所以,新手伙伴们,你们的福音来咯!希望接下来的每一期教程,你都能吸收掌握!下面开启我们的Python之旅! Python的简介Python是由荷兰人吉多·范罗苏姆(Guido von Rossum,后面都称呼他为Guido)发明的一种编程语言Python的历史1989年圣...

weixin_42519514的博客 241

Python高级特性】动态类型

Python 是一种动态类型语言,这意味着变量的类型是在运行时确定的,而不是在编译时决定。Python 变量可以在其生命周期中绑定不同类型的值,这与静态类型语言(如 Java、C++)不同,后者要求在编译时就确定变量类型。

冰可乐的数据之路 1291

5. 解释一下 Python 中的动态类型

动态类型指的是在运行时,变量的数据类型是可以改变的。这与静态类型相反,静态类型在编译时就需要明确指定变量的数据类型,并且一旦确定,就不能再改变。在Python中,变量的数据类型是根据其赋值的内容动态确定的。这意味着你可以在不显式声明类型的情况下直接给变量赋值,而解释器会根据值的类型为变量分配相应的数据类型。x = 42 # x是整数类型y = "Hello" # y是字符串类型z = 3.14 # z是浮点数类型在上述例子中,变量x首先被赋值为整数42,因此被解释为整数类型。接着,变量y。

weixin_68551689的博客 1747

python 的动态类、动态对象类(我自己取的名)

python的奇巧淫记,实现一个类代替所有类的两种方式

weixin_40301728的博客 851

Python基础6--类1(静态类与动态类)

类提供了一种组合数据和功能的方法。 创建一个新类意味着创建一个新的对象类型,从而允许创建一个该类型的新实例 。 每个类的实例可以拥有保存自己状态的属性。 一个类的实例也可以有改变自己状态的(定义在类中的)方法。 一、类的基本组成 首先看个例子: class New_Year(): #定义一个类 New_Year() “”“创建一个新年的类”“” #说明文档 def go_home(self): #定义一个方法 go_hom...

刘阿童木的博客 3782

Python元编程-动态创建类和实例介绍、使用

动态创建类和实例是 Python 元编程中的一项重要功能,它可以在运行时动态地创建类和实例,从而实现更加灵活、可定制化的编程方式。以下是有关 Python 元编程动态创建类和实例的详细介绍:工作原理:Python 允许在运行时动态地创建类和对象,这是因为 Python 中的类和对象本质上是由 type 类创建而来的。因此,可以使用 type() 函数来动态地创建新的类和对象,可以使用 exec() 函数来执行字符串形式的代码,还可以使用 metaclass 来实现动态创建类的类。

captain 2272

chatgpt赋能pythonPython动态数据类型

本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。

test100t的博客 193

DBS丹纳赫:战略部署矩阵-DBS丹纳赫精益

DBS丹纳赫:战略部署矩阵/DBS丹纳赫精益 P2DBS丹纳赫:战略部署矩阵/DBS丹纳赫精益DBS丹纳赫:战略部署矩阵/DBS丹纳赫精益DBS丹纳赫:战略部署矩阵/DBS丹纳赫精益DBS丹纳赫:战略部署矩阵/DBS丹纳赫精益

上一篇: 如何系统的学习Python?
下一篇: 【Python学习实践教程】10个Python经典项目实战,练手必备
黑客老许
博客等级 码龄8年 5945粉丝 1034原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值