廖雪峰Python教程整理归纳(1):数据类型与变量
注:转载本文,请注明出处:https://www.cnblogs.com/cynthius-phi/p/15185807.html。
本文整理自:https://www.liaoxuefeng.com/wiki/1016959663602400/1017063826246112
前言 / 写在前面
我打算写一个系列的文章,内容是对廖雪峰的Python教程进行的整理归纳,因为我想要刷一遍Python的基础概念。注意,这只是我自己写给自己看的归纳,并没有打算面向除我以外的人(即便我将这些内容发表在了公开的网络空间中),所以未必适合所有读者朋友的阅读(但也可以试着读一读)。真心希望认真学习Python的朋友,建议去访问原网站,或者找一个别的正式的教程来学习。
此外,我的心情其实也有些复杂。这是我新注册的博客园账号,但自开通了博客之后已经过去了两个多星期,我却没有写过一篇文章,连登录也没有过,导致我对这个账号的兴趣就走低了,觉得事情就不“顺滑”了,甚至在考虑要不要注销掉账号再全部重来一次。不过考虑到实在有些想写这个系列的文章,以及注销也会比较麻烦,我就算了。
最后,我使用的Python版本为3.9.6,本系列的内容均基于此版本(甚至可能更高,如果我的Python升级了),部分内容可能仅适用较高版本的Python。
那就让我们开始吧。
正文
数据类型
整数
常规表示方法与数学上的一致,如12、0、-270。
可以使用16进制表示,方法为在具体的数前加0x,如0xff00。
允许使用_分隔一个数(一般用于较大的数,作用是方便阅读),进制不限,如10_000_000,0xd3c4_b5a6。
补充
非10进制数(带有进制前缀)允许在开头位置补0,如0x00ff;但10进制数不允许这样做。
对于16进制数,x、a~f的大小写不限,即0x可以写成0X,a~f也可以使用A~F。同一个数甚至允许大小写混用,如0Xff、0xFf。
16进制数也可以是负数,用-0x表示。但不可用0x-表示16进制负数。
_可以以任意的方式添加在数中,如10_000_000和1_00_0000_0都是可以的;对于非10进制数,添加在进制前缀与主体部分之间也是允许的,如0x_abcd;但不可连续出现多个_,如10__000(有连续2个_)是不允许的。
此外,对于8进制数,Python也是允许的,但表示法与C系语言有所区别:其使用的前缀为0o(或0O),即阿拉伯数字0 + 英文字母O/o,而不是一个简单的0。
Python也允许2进制数,语法与C++/Java相同:使用前缀0b(或0B)。(注:C++自C++14起才允许使用0b表示二进制字面值。)
浮点数
常规表示法与数学上的一致,如3.14、-2.5。
可以使用科学计数法(计算机中称E表示法;常用于绝对值很大或很小的数),即将a×10n写为(a)e(n)。如5.98e24、6.62e-34。
补充
以.0(可以不止一个零,如.00、.000甚至更多)结尾的数,如2.0,4.00,即使在数学上被认为(值)是整数,在Python(程序)中也会被认为(数据类型)是浮点数。数学上的值的类别和程序上的数据类型是不一样的,在程序中值为整数也可以数据类型为浮点数(但反过来是不行的),这两方面需要严格区分!
使用E表示法表示的数,即便实际值为整数,类型也是浮点数,如1.2e5,5.98e24。
对于E表示法,字母E大小写不限,即E/e都是允许的。(但下文统一使用“e”)
对于E表示法,e前面的部分的绝对值可以 >= 10 或 < 1,如12e4、0.598e25,也就是说不要求严格按照科学计数法的规范来做。但e后面的部分不能是小数,如1.2e5.1就是不允许的。
对于E表示法,e前面和后面的部分都可以加上“+”或“–”,不加则默认为“+”。如5.98e+24、-2.53e6。
字符串
字符串用\’ \’或” “引起,如\’abc\’、“xyz”。\’ \’内部可以出现““”(作为普通字符),” “内部也可以出现“\’”(作为普通字符)。
可用\指定一些特定的字符(即转义字符;有时则必须这样做)。如\\’、\”、\\、\n、\t。
用r\’ \’扩起的字符串,其内部的\将被视为普通字符而非转义符号(r = raw,原始的)。
用\’\’\’ \’\’\’扩起的字符串,可跨越多行。
补充
虽然\’ \’内部可以出现“,” “内部也可以出现\’,但在\’ \’和” “内部仍分别使用\”和\\’来表示“和\’也是没有问题的。
所有的\’ \’都可以改为” “,如r\’ \’可以改为r” “,\’\’\’ \’\’\’可以改为“”” “””。
r\’ \’不能以单个\结尾,如r\’ab\\’是不允许的。
布尔值
就是True/False的值,没什么好说的。注意True/False首字母大写。支持3种运算:and、or、not。其中and和or是双目运算符(要2个操作数),出现在两个操作数之间;not是单目运算符(仅要1个操作数),且出现在操作数前面。
补充
not其实还有更多的用法,我们后面再说。
空值
就是None,以后再细说。
最后最后,Python中的数据类型其实还有更多,关于这点我们以后再说。
变量
变量可以视为用来存储以上类型的数据的“盒子”(虽然这个说法不太准确,但它最原初的含义是这样,后面再更新理解)。其值可变,故称变量。
在程序中,变量用一个变量名表示。变量名只能包含字母、数字和_,且开头不能是数字。
在Python中,变量被赋予了什么类型的值,变量就具有什么类型。值得一提的是,在Python中,变量的类型不固定(因为Python是动态语言)。
此外,给变量赋某个值,其实是让变量指向该值。将变量a赋给变量b,其实是让变量b指向变量a指向的值。因此,在这样的操作之后,再改变变量a的值(即变量a所指向的值),对变量b是没有影响的。
(这里涉及到了Python在内存方面的知识,有空再仔细深入了解下)
常量
首先,Python中不能定义常量。但习惯上还是用全大写字母来指明要将一个量视为(注意只是“视为”)常量,如PI = 3.1415926536。
* Python的除法系运算
Python有3种除法系运算(我自己为这一系列运算取的名字,因为它们都与“除法”有密切关联)。
/
数学意义上的除法。显示精确结果。结果总是浮点数(即便能整除)。
//
地板除。显示/除法运算结果的整数部分(向下取整)。结果总是整数。
%
取余数。
补充
值得一提的是,Python的/运算与数学上的相同,不像C系列的语言(C/C++,或许还有Java),对于整数的/运算只返回整数部分(即与//相同)。
此外,//和%运算也适用浮点数,这与C系列语言也不同,至少在C/C++中,%两边都要求必须是整数。