首页 / 资讯中心 / 文章详情

Python变量没有类型?这个真相新手根本想不到

Python变量没有类型?这个真相新手根本想不到 ★ FEATURED ARTICLE
开头一个让新手集体懵圈的问题要是你才刚开始着手学习, 老师跟你讲: “其中的变量不存在类型”——你会有怎样的反应呢?我寻思着, 你脑袋里头第一个冒出来的想法会是: 老师这是在跟我闹着玩儿? 我清清楚楚写了name 张三, name可不就是字符串那种类型么? 你先前教给我的type()函数查出来的难道不是str吗? 这会儿怎么又讲变量不存在类型了?先别着急得很, 这个违背常规认知的结论, 恰恰正是跟Java、C这些语言差异最大的方面之一噜。就在今天, 我将会 使用一个快递箱用作比喻, 把这个事情清清楚楚地向你解说清楚?顺便把最基础的三种数据类型也一起讲了一个比喻全搞定。一、数据类型是什么说白了就是东西的分拣标签你前往快递驿站去取件, 老板会跟你这么讲: “你所拿的这个物品是衣服, 需放置在左边那个物品是食品, 要放置在右边另外还有一个属于电子产品, 需单独放置。”。为啥子要进行区分呢? 是由于存在不同品类的事物, 其处置办法是有差别的。食品是不能够按压的, 电子类产品是惧怕遭到摔落的, 衣物则能够随意丢弃的。程序内部的数据亦是如此状态。拿来一份数据, 必须首先弄明白: 这个东西究竟是文字形式、是属于整数之范畴、还是带有小数点的那种数字类属? 弄明白之后, 才会晓得应当怎样去进行处理操作。这个分类标签就叫数据类型。二、三种最基础的数据类型一个比喻秒懂它所拥有的数据类型存在着许多种类, 然而在新手所处的阶段之中, 你仅仅只需要牢记三种。这情形恰似快递驿站平常最为经常处理的三类包裹那般:1. 字符串str—— 快递面单上的品名文字构成的便是字符串, 像“张三”这般, 还有“李四”似的, 以及“Hello World”这种。关键特征必须用引号包起来。单引号、双引号都行但必须有。有如快递面单之中存在一栏称作“品名”, 而你所填写的乃是“衣服两件”, 这几个字自身属于文字方面的描述, 并非实实在在的衣服, 引号等同于这个“品名栏”, 予以告知。别去剖析这究竟是什么含义, 它仅仅是一段文字。有一个英文全称, 是这样的, 然而在代码里面, 只认可前面的三个字母str, 就如同你有着“张三丰”这样的称呼, 可是快递小哥仅仅称呼你为“老张”, 请问这是为什么呢。type(张三) # 结果是 str2. 整型int—— 快递箱上的数量整型就是不带小数点的数字。 比如18、22、100。就如于快递箱外头所粘贴的标签之上写着三箱这般情况, 此之中的这个三便是整数。难道会存在他人, 书写成三点零箱这种样子吗? 那样做可实在是太过于爱较真啦。英文全称是代码里简称int。type(18) # 结果是 int3. 浮点型float—— 快递箱上的称重浮点型就是带小数点的数字。 比如65.2、74.6。好似你前去寄发快递, 电子秤之上呈现“1.5kg”, 此1.5即为浮点数, 带有小数点, 精确到小数数位。英文完整称呼是Float, 其意思为“浮动”, 原因在于小数点能够“浮动”至不一样的位置, 在代码当中就称作float。type(65.2) # 结果是 float三、type()函数——里的扫码枪快递驿站有个扫码枪扫一下包裹就能知道这是什么类型的件。在那里同样存在着这样一种被称作“扫码枪”的东西, 它实际上就是type()函数。当把数据放置到括号内部的时候, 它便能够向你告知这究竟是何种类型。但在这儿存在着一个新手必定会踩到的陷阱: type()能够查探出类型, 然而它并不会自行将其打印展示出来。这情形如同扫码枪扫描完毕后, 出现屏幕上呈现出了结果, 可是却没任何人会帮你把它念出来一样。怎么把结果打印出来两种办法办法一找个快递员帮你传达首先要让一个变量去接住type()所产生的结果, 接着再把这个有结果的变量打印出来, 这如同扫码之后的结果先存放在快递员的脑子里, 然后经由快递员通过口头的方式告知给你一样。result type(张三) print(result) # 输出:在这里的, 属于是个中间人, 其职责在于把通过type()查询得到的结果, 转交到print()那里去进行打印呈现出来。你也许会发问: 这个名字非得叫这个吗? 当然不必。你叫abc, 叫xxx都可以, 只不过是意味着结果, 看起会更直观些。就如同你给快递员取外号, 叫小张也好, 叫老赵也罢, 都不影响快递的派送。办法二直接套娃让type()直接进入到print()的括号当中, 达成一气呵成的目标, 恰似扫码枪径直连接着喇叭, 扫描完毕便自动进行播报。print(type(张三)) # 输出:这个事儿确切来看犹如那种套东西互相嵌套玩法——print()这个是放置于外部被嵌套着, type()此处在里面被嵌套着, 呈现出一层把另一层给包裹起来的状况。print所起的作用是负责实施打印动作, 那具体打印的是啥内容呢? 打印的乃是通过type()查询而得出的相应结果了。存在着两种办法, 其效果全然相同, 无论你选择哪一种都是可以的。对于新手而言, 建议首先采用第一种办法, 因为其逻辑更为清晰。而当熟练之后, 则可以选用第二种办法, 该办法的代码更加简洁。四、输出里的是啥意思你使得代码实施运行之后, 控制台所输出的并非单纯的str, 而是, 排在前面存在着多个class, 并且两边还被尖括号将其包裹着。新手瞧见这个容易局促不安地寻思: 我是排查数据类型的, 怎么突然冒现出个class类? 我还没修习过面向对象别急, 这儿class翻译过来是“类”之意, 你能暂且把它视作“类型”的正式讲法, 如同你去医院, 挂号单所写的“呼吸内科”, 实际上是看感冒的, 只是说法不一样罢了。那个, 什么是那两个尖括号呀, 它是在打印数据类型的时候所使用的一种固定格式, 这跟快递单上必然要印上“收件人”以及“寄件人”是同样的道理, 仅仅只是格式罢了, 不需要深入去探究。那由尖括号所包含的, 那个str、int或者float, 才是你仅需去关心的对象, 仅此而已。五、今天的重头戏变量没有类型好了铺垫了这么多该说那个让新手集体懵圈的结论了。先看一段代码name 张三 print(type(name)) # 输出:1. 你运用type()去查询name, 2. 其结果呈现为str, 3. 于是你会这般表述: 称作name的那个的类型属于字符串这一类别。但这个说法是不严谨的。 严谨的说法是name变量所对应的数据的类型是字符串。区别在哪在于——中的变量没有类型数据才有类型。快递箱比喻一次讲透假想你前往宜家购置了好些收纳盒, 对于收纳盒自身而言, 存在类型之分吗? 不存在, 它仅仅是个空的盒子, 仅此而已。可是你于其中放置了衣服, 当他人询问你“这个盒子里头装的是何种类型的东西”时, 你会讲“衣服”。倘若你进行了更换, 其里面装的是零食, 那么这便是“食品”。盒子的类型取决于里面装了什么而不是盒子本身。里的变量就是收纳盒数据就是里面的东西。box 张三 # 盒子里装了文字type(box)是str box 18 # 盒子里换了整数type(box)是int box 65.2 # 盒子里又换了小数type(box)是float看, 同样的那个变量, 也就是所谓的盒子, 它能够去装不一样类型的数据。这便是为何会说“变量不存在类型”的缘由所在, 原因是变量它仅仅只是一个容器而已, 而类型呢是归属于放在里面的数据的。跟Java的区别要是你先前接触过Java, 或许会愈发懵圈。缘由在于, Java之中的变量是存在类型的:javaint age 18; // age这个变量就是int类型以后只能装整数Java中的变量好似专门的收纳盒子, 那是买来用于装衣服的, 要是你强行往里面塞零食, 它就会出现报错的情况, 啊。的变量则是万能收纳盒——什么都能装随时换。因此要是你属于从Java转向别种语言的情况, 或者是同时学习两门语言, 那么这个差异就绝对得留意。记不住这一情况并无大碍, 首先先把这句话铭记于脑海之中:中变量没有类型数据才有类型。六、引号陷阱新手最容易踩的坑最后说一个新手100%会踩的坑——引号。看下面两组代码print(type(18)) # 输出: int print(type(18)) # 输出: str同样是18加了引号就变成字符串了那以什么缘由成这样状况? 回到之前所提及的比喻上来, 引号就好比快递面单里的那个“品名栏”。你写下18其中不加引号这种形式了, 此时就会被理解成“这样呈现的是18个物品”, 这里代表的含义是数字。你要是写成“18”这里的18加上引号了这般模样, 那就会被视为“这所表达出的是两个字符, 即为1和8”, 它所代表的意义可就是文字了。print(type(65.2)) # 输出: float print(type(65.2)) # 输出: str65.2也一样。不加引号是浮点数加了引号就是字符串。记住这个口诀有引号是文字没引号是数字。这种特定的情况于实际的编程操作当中是极为常见的, 举例来说, 当你从网页那儿获取用户所输入的年龄之时, 抓到的始终都是字符串形式的18, 并非整数形态的18, 如果直接拿其去开展数学运算, 那么就会出现报错的情况, 在这个时候, 你就得手动将字符串转化成数字, 这属于后续要讲的内容, 先记住这种区别。归纳: 用三句话记住今日的内容, 有三种基础类型, str字符串, 带有引号, int整型, 没小数点 , float浮点型, 含有小数点。type()是扫码枪, 用于查询数据类型, 想要输出结果那就套个print()。变量不存在类型, 数据才有类型。变量是收纳盒, 类型属于里面所装之物, 并非属于它自身的。在新手阶段, 要将这三种类型理解明白, 后续会对列表, 元组, 字典基于此种情况予以扩展。把基础稳固, 之后不管学什么都会进展迅速。写到这儿, 实际上数据类型最为关键的认知唯有一个, 那便是变量属于盒子, 然而数据才是置于盒子里的物品, 类型是粘贴在物品之上的, 并非粘贴在盒子上面。一旦想明白这一点, 你便比百分之九十的新手在前行的道路上多迈出了一步。
阅读完成 · 觉得有帮助?
咨询建站