Python分享之动态类型

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

动态类型(dynamic typing)是Python另一个重要的核心概念。我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值。这些都与动态类型的概念相关。

 
动态类型

在我们接触的对象中,有一类特殊的对象,是用于存储数据的。常见的该类对象包括各种数字,字符串,表,词典。在C语言中,我们称这样一些数据结构为变量。而在Python中,这些是对象。

对象是储存在内存中的实体。但我们并不能直接接触到该对象。我们在程序中写的对象名,只是指向这一对象的引用(reference)。

引用和对象分离,是动态类型的核心。引用可以随时指向一个新的对象:

a = 3
a = 'at'

第一个语句中,3是储存在内存中的一个整数对象。通过赋值,引用a指向对象3。

第二个语句中,内存中建立对象‘at’,是一个字符串(string)。引用a指向了'at'。此时,对象3不再有引用指向它。Python会自动将没有引用指向的对象销毁(destruct),释放相应内存。

(对于小的整数和短字符串,Python会缓存这些对象,而不是频繁的建立和销毁。)

a = 5
b = a
a = a + 2

再看这个例子。通过前两个句子,我们让a,b指向同一个整数对象5(b = a的含义是让引用b指向引用a所指的那一个对象)。但第三个句子实际上对引用a重新赋值,让a指向一个新的对象7。此时a,b分别指向不同的对象。我们看到,即使是多个引用指向同一个对象,如果一个引用值发生变化,那么实际上是让这个引用指向一个新的引用,并不影响其他的引用的指向。从效果上看,就是各个引用各自独立,互不影响。

其它数据对象也是如此:

 

L1 = [1,2,3]
L2 = L1
L1 = 1

但注意以下情况

L1 = [1,2,3]
L2 = L1
L1[0] = 10
print L2

在该情况下,我们不再对L1这一引用赋值,而是对L1所指向的表的元素赋值。结果是,L2也同时发生变化。

原因何在呢?因为L1,L2的指向没有发生变化,依然指向那个表。表实际上是包含了多个引用的对象(每个引用是一个元素,比如L1[0],L1[1]..., 每个引用指向一个对象,比如1,2,3), 。而L1[0] = 10这一赋值操作,并不是改变L1的指向,而是对L1[0], 也就是表对象的一部份(一个元素),进行操作,所以所有指向该对象的引用都受到影响。

(与之形成对比的是,我们之前的赋值操作都没有对对象自身发生作用,只是改变引用指向。)

列表可以通过引用其元素,改变对象自身(in-place change)。这种对象类型,称为可变数据对象(mutable object),词典也是这样的数据类型。

而像之前的数字和字符串,不能改变对象本身,只能改变引用的指向,称为不可变数据对象(immutable object)。

我们之前学的元组(tuple),尽管可以调用引用元素,但不可以赋值,因此不能改变对象自身,所以也算是immutable object.

 
从动态类型看函数的参数传递

函数的参数传递,本质上传递的是引用。比如说:

def f(x):
    x = 100
    print x

a = 1
f(a)
print a

参数x是一个新的引用,指向a所指的对象。如果参数是不可变(immutable)的对象,a和x引用之间相互独立。对参数x的操作不会影响引用a。这样的传递类似于C语言中的值传递。

如果传递的是可变(mutable)的对象,那么改变函数参数,有可能改变原对象。所有指向原对象的引用都会受影响,编程的时候要对此问题留心。比如说:

def f(x):
    x[0] = 100
    print x

a = [1,2,3]
f(a)
print a

动态类型是Python的核心机制之一。可以在应用中慢慢熟悉。

 
小结

引用和对象的分离,对象是内存中储存数据的实体,引用指向对象。

可变对象,不可变对象

函数值传递

Python编程心得体会 总结起来,我对Python的学习和使用体验非常愉快。它的简洁性、强大的库支持、动态类型和面向对象编程以及丰富的社区资源,使得Python成为一门理想的编程语言。希望通过这篇文章的分享,能够激发更多人对Python的兴趣和学习热情。Python作为一门简洁而强大的编程语言,在我学习和使用的过程中给我留下了深刻的印象。在下面的文章中,我将分享我对Python的心得体会,并提供一些相关的源代码示例。注:以上示例代码仅供参考,实际运行时可能需要稍作调整和修改以适应特定的环境和需求。Python编程心得体会。 阅读详情

相关推荐

【抖音滑动验证码风控分析】

文章摘要:通过对比正常响应与验证码风控响应的头部信息,发现两者存在显著差异。正常响应返回JSON格式数据(Content-Type: application/json)并采用分块传输(Transfer-Encoding: chunked),而风控响应仅返回空文本(Content-Type: text/plain,Content-Length: 0),并通过X-Vc-Bdturing-Parameters等特殊头字段传递风控信息。这些差异主要体现在内容类型、数据传输方式和风控标识参数上,为风控识别提供了关键特

qq_44990881的博客 1103

Python 的动态类型介绍

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

yygr的博客 489

抖音a_bogus参数逆向避坑指南:从环境检测到XHR请求的全流程解析

本文详细解析了抖音a_bogus参数在v1.0.1.19版本下的逆向工程全流程,重点介绍了如何通过PyV8Env框架进行有效的补环境操作,以绕过严格的环境检测。内容涵盖从环境初始化、关键事件触发到模拟XHR请求获取签名的完整步骤,并提供了可运行的Python代码示例和常见检测点的避坑指南,帮助开发者稳定生成有效的a_bogus参数。

tech5的博客 602

chatgpt赋能python:Python动态数据类型

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

test100t的博客 197

矩形口径喇叭天线设计——参数设置

我们建立好矩形口径喇叭天线的模型后(模型建立可参考B站相关视频或者李明洋的《HFSS天线设计》),如何修改参数达到我们的指标呢?

m0_57263863的博客 1万+

广工计组实验f2一位全加器

一位全加器实验

weixin_63692154的博客 2847

【Python高级特性】动态类型

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

冰可乐的数据之路 1296

【高清照片】深圳光博会看PCIe Over Fibre 实现方案

本文分析了PCIe over Fibre技术及其在数据中心的应用前景。该技术通过光纤延伸PCIe总线,解决了传统铜缆距离限制问题,支持跨机架资源池化。目前主要有两种实现方式:CDFP混合光缆方案和Retimer转接卡方案,各有优缺点。文章还探讨了CDFP接口的现状、低速信号传输解决方案,以及PCIe速率与光通信发展的对应关系。最后对比了PCIe光缆与以太网光缆的关键差异,指出PCIe光互连在协议透明度和边带信号处理上的特殊要求。随着标准推进,PCIe over Fibre将成为数据中心扩展高带宽、低时延互连

Saniffer的博客 1388

python基础知识——动态类型和注释

str 这种数据类型,只能进行 +(字符串的拼接),不能进行 - * / 这种操作,但是能够进行len这种特殊的操作。通过这段代码,我们发现,在python中,变量的数据类型是可以在程序运行的过程中发生变化的,这种特性我们称之为“动态特性” ,a的类型从 int变为float,又变为str。如图使用这样的一段代码,其实并不容易理解代码的含义,只需要一段注释,就可以清晰明了的理解代码的含义。好处说完了,这么做的坏处在于,对于一些大型项目,提高了模块之间的交互成本,让自己的代码可读性降低。

Spark6_的博客 446

详解舵机的基本原理以及控制方法

文章目录什么是舵机?伺服控制硬件连接舵机规格SG90MG90SMG996R总结 什么是舵机? 舵机是伺服电机的一种,伺服电机就是带有反馈环节的电机,我们可以通过伺服电机进行精确的位置控制或者输出较高的扭矩; 舵机也叫也叫 RC 伺服器,通常用于机器人项目,也可以在遥控汽车,飞机等航模中找到它们。 类似舵机这样的伺服系统通常由小型电动机,电位计,嵌入式控制系统和变速箱组成。 电机输出轴的位置由内部电位计不断采样测量,并与微控制器(例如STM32,Arduino)设置的目标位置进行比较; 根据相应的偏差,控制

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 4万+

数据仓库数据质量监控和处理方法最佳实践

指的是检查数据是否存在反常或者错误的情况,例如数值反常地过大或者过小,或者超过记录的波动值,对应的规则包括数值波动检查,最大值、最小值检查,跨表准确性等。指的是检查数据是否存在缺失的情况,这里的缺失可以是整个数据集的记录缺失,也可以是某个字段记录的缺失,对应的规则包括空值检查,表总行数检查。指的是检查数据是否符合规范,是否按照规定的格式存储,对应的规则包括正则表达式检查,字段长度检查,枚举集合检查,数值范围等。指的是检查哪些数据是重复数据或者数据的哪些属性是重复的,对应的规则例如主键唯一性检查。

大模型大数据攻城狮的专栏 899

给大家分享一篇Python进阶 动态类型

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 动态类型(dynamic typing)是Python另一个重要的核心概念。我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值。这些都与动态类型的概念相关。 动态类型 在我们接触的对象中,有一类特殊的对象,是用于存储数据的...

qq_41235053的博客 191

Autosar PWM模块的配置和使用

在上面的代码中,我们首先配置了PWM的初始化参数,包括频率和分辨率。GPIO Driver:由于PWM信号需要输出到特定的引脚上,因此我们还需要使用GPIO驱动程序来控制引脚的状态。通过合理配置和应用PWM模块,我们可以实现对汽车电子系统中各种功能的精确控制,从而提高汽车性能和用户体验。在实际应用中,我们可以根据需要进行更多的配置和调整,以实现灵活的PWM控制。PWM Driver:这是主要的PWM驱动程序,负责产生PWM信号并输出到相应的引脚上。接下来,我们需要配置PWM模块的参数。

TcData的博客 682

人生苦短就用python_人生苦短,我用Python

21CTO导读:不知道你不是有兴趣用Python来开发应用程序?在本文中,我们来讲解一下如何将Python当做一种好的Web开发语言。“我最喜欢的语言是Python。它简单,有干净的语法,支持面向对象开发,良好的库支持,可选的命名参数” 。去看,我为一家公司启动一个新项目。刚一开始时,我们讨论了选择什么样的语言来编程,以便我们能够在最短时间内达到MVP-最小化价值的效果,同时也能在该项目学习到新知...

weixin_39939601的博客 410

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Python技巧总结与思路分享

开场白:Python之旅的奇妙冒险Python的魅力何在?从零到英雄技巧揭秘:Python高手的独门秘籍轻松上手:那些让你少走弯路的Python小贴士代码优化:让程序飞速运行的秘诀动态类型的魅力:如何利用Python的灵活性创新实践:用Python解决实际问题的精彩案例数据分析实战:Python如何帮你洞察数据背后的故事Web爬虫探秘:Python带你遨游互联网的海洋自动化脚本:让Python成为你的高效助手探索未知:Python引领的未来趋势机器学习入门:Python如何开启人工智能的大门。

master_chenchen的博客 1192

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python技术、面试题分享

python练习以及面试题回答总结

2301_80380309的博客 931

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python_入门基础语法(1)

本文主要介绍了Python基础语法与C++/Java的主要区别。Python采用动态类型,变量类型在运行时确定,且整型无大小限制,浮点型仅float一种但相当于双精度。字符串使用灵活,单/双引号等价,支持三引号处理复杂字符串。输入输出使用input()和print(),支持f-string格式化。运算符方面,算术运算包含**幂运算和//地板除;关系运算符可直接比较字符串;逻辑运算符支持and/or/not及短路求值。Python特有赋值方式如多元赋值(a,b=1,2)和复合赋值(+=),但去除了易混淆的++

xiaosuai168的博客 1030

学了python的心得体会200字,初学python的感悟500字

更重要的是,它也有大量的库,开箱即用的,使Python国王的改变,它可以在所有主流平台上完美运行。执行一个= ' ABC ',解释器会创建字符串'ABC\u201D和变量,分'ABC\u201D(这类似于C \/ c++语言中一个指针):执行b = a,和解释器创建变量b, b点到弦'ABC\u201D指出的:执行=\u201CXYZ\u201D、解释器创建字符串'XYZ\u201D和变化的点'XYZ\u201D,但b没有改变:所以,最后,打印的结果变量b是自然'ABC\u201D。

x062500的博客 390

学习笔记--python(1)--learn python the hard way

跟我学python系列之一--learn python the hard way

global_var的专栏 720

Python 哲学

以下关于Python的几个菜鸟看法是最近在详细学习Python中的一些感受。 实用往往会胜过美观 习惯了c c++ java等语言的人在看到Python编写出来的代码的时候,往往会感觉到Python不如C那样宛如诗歌一样优美,但是Python却是以实用为主的。例如Python中的三重引号的使用。 尽可能自动化,方便开发者 Python在不断地发展演进中一直在提供更多的内建方法属性帮助开发人

yanchong_RD的专栏 1827

python入门经典实例-Python入门基础知识实例,值得收藏!

7月的编程语言指数榜已经发布,Python 在今年5月首次超越 Java 拿下榜首位置后,仍保持上涨趋势,正逐渐与 Java 拉开差距。(图为与去年 7 月数据对比)上周为大家简单介绍了如何安装Python和配置环境?相信大家都将Python安装成功了吧~今天小白就为大家分享一些Python的基础知识,希望大家都能快速入门Python~1.在Python 语言中,对象是通过引用传递的。在赋值时,不...

weixin_37988176的博客 411

初学python的心得_给大家分享一下日常学习python的心得(详解)

看了python的相关资料,最大的特点就是其简单,容易上手.学完后感觉确实如此,现说说学完后的感觉.1、python中双引号和单引号作用一样,print 'hello World'和print "hello World"是一样的(print语句中连接字符串用,)2.python,使用变量,不需要定义类型,只要赋初值就行,和javascript中定义变量有点类似,只是更简单了,连var都不需要3.p...

weixin_39953740的博客 141

python 浅谈

(2011-11-27 14:47:37) 不知道是怎么回事,学了C、java这类语言后,发现像python、php、js这类语言一点都“不靠谱”,感觉丧失了一点“严谨”。你不需要申明变量,就可以直接使用,这样如果因为程序员一时的疏忽,导致变量的混淆,岂不是很容易 出错。 适应了C、java的格式之后,真的有点别扭。好像是一群按规矩办事的人一下子得不按常理出牌一样,虽然网上对这两类语言

当回忆不再总是~ 413

【Python学习】Python的语法特点是什么?

Python的语法特点是其成功的关键因素之一。它不仅简化了编码过程,还促进了代码的可读性和可维护性。

2301_78217634的博客 1094

清华大佬7天整理!137页Python学习笔记,全面总结看这一篇就够了

Python作为当下最热门的编程语言之一,从前几年一直火到现在,并且还有更甚的趋势。不仅吸引了众多业内人士,圈外人士也纷纷加入了学习Python的阵营之中。但很多朋友在学习Python时,直呼:太难了,学不会!那么Python到底应该怎么学?如何把枯燥乏味的教程变为浅显易懂呢?今天给大家分享一份大神整理的,137页超全汇总,将一个核心知识点统筹在一个章节里面,更具,方便大家吃透Python难点,很适合新手入门。

m0_59595915的博客 433
上一篇: Python异常处理之分享
下一篇: Python分享之序列的方法
普通网友
博客等级 码龄9年 368粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值