Python的基本数据类型汇总:
整数
Python 可以处理任何大小的整数,当然包括负整数。程序中的表示与数学写法一模一样,例如:1、100、-8080、0等。
因为计算机使用二进制,有时用十六进制表示整数很方便。十六进制用0x前缀和0-9、a-f表示,例如:0xff00、0xa5b4c3d2等。
浮点数
浮点数也是小数。之所以称它们为浮点数,是因为用科学计数法表示时,浮点数的小数点位置是可变的。例如,1.23x109 和 12.3x108 完全相等。浮点数可以写成数学形式,例如 1.23、3.14、-9.01 等。但对于非常大或非常小的浮点数,必须用科学计数法表示,将10换成e,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,以此类推。
整数和浮点数在计算机内部存储的方式是不同的。整数运算总是精确的(除法也精确吗?是的!),而浮点运算可能有舍入误差。
字符串
字符串是用单引号 ' 或双引号 " 括起来的任何文本,例如 'abc'、"xyz" 等。请注意,'' 或 "" 只是它们本身的表示,而不是字符串的一部分,因此,字符串'abc'只有a、b、c这3个字符,如果'本身也是字符,可以用""括起来,例如"I'm OK"包含字符I、'、m、空格、O、K这6个字符。
如果字符串同时包含'和"怎么办?它可以用转义字符\来标识,例如:
'I\'m \"OK\"!'
表示的字符串内容是:
I'm "OK"!
转义字符\可以转义很多字符,比如\n代表换行符,\t代表制表符,而字符\本身也应该被转义,所以\\代表的字符就是\,在Python上可以用来打印交互式命令行()打印字符串看看:
>>> print('I\'m ok.')
I'm ok.
>>> print('I\'m learning\nPython.')
I'm learning
Python.
>>> print('\\\n\\')
\
\
如果字符串中有很多字符需要转义,就需要加很多\。为了简化,Python还允许r''表示''里面的字符串默认不转义,大家可以自己试试:
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
如果字符串内部有很多换行符,则很难在一行中使用 \n 来读取它。为简化起见,Python 允许以 '''...''' 的格式表示多行。你可以自己试试:
>>> print('''line1
... line2
... line3''')
line1
line2
line3
以上是在交互式命令行中输入的。注意,输入多行时,提示符会从 >>> 变为 ...,提示你输入上一行。请注意, ... 是一个提示,而不是代码的一部分:
┌───────────────────────────────────────────────────────┐
│Command Prompt - python _ □ x│
├─────────────────────────────────────────────────────── ┤
│>>> print('''line1 │
│... line2 │
│... line3''') │
│line1 │
│line2 │
│line3 │
│ │
│>>> _ │
│ │
│ │
│ │
└────────────────────────────────────────────────────────┘
当输入终止符```和括号)时,语句被执行并打印结果。
如果写成程序并存为.py文件,就是:
print('''line1
line2
line3''')
多行字符串'''...'''还可以在前面加上r使用
布尔值
布尔值的表示和布尔代数完全一样。一个布尔值只有两个值,True 和 False,True 或 False。它可以通过布尔运算来计算:
>>> True
True
not 操作是一个否定操作。它是一个将 True 变为 False 并将 False 变为 True 的一元运算符:
>>> not True
False
空值
null 值是 Python 中的一个特殊值,用 None 表示。 None 不能被解释为 0,因为 0 是有意义的并且 None 是一个特殊的 null 值。
此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型,我们后面会继续讲。
变量
变量的概念与初中代数中的方程变量基本相同,只是在计算机程序中,变量不仅可以是数字,还可以是任何数据类型。
变量在程序中由变量名表示。变量名必须是英文大小写、数字和_的组合,不能以数字开头,如:
a = 1
变量a是一个整数。
t_007 = 'T007'
变量t_007是一个字符串。
Answer = True
变量Answer是一个布尔值True。
在Python中,等号=是一个赋值语句,可以将任意数据类型赋给一个变量,同一个变量可以重复赋值,可以是不同类型的变量
变量本身的类型不固定的语言称为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型。如果赋值时类型不匹配,会报错。
最后,了解变量在计算机内存中的表示方式也很重要。当我们写:
a = 'ABC'
时,Python解释器干了两件事情:
在内存中创建了一个'ABC'的字符串;
在内存中创建了一个名为a的变量,并把它指向'ABC'。
你还可以将变量 a 分配给另一个变量 b。这个操作实际上是把变量b指向了变量a所指向的数据。
常量
所谓常数,就是不能改变的变量。例如,常用的数学常数π就是一个常数。在 Python 中,常量通常由全部大写的变量名表示:
PI = 3.14159265359
但实际上 PI 仍然是一个变量。 Python 根本没有确保 PI 不会被更改的机制。因此,使用所有大写的变量名来表示常量只是一种习惯用法。如果你必须改变变量 PI 的值,没有人可以阻止你。
最后,解释为什么整数的除法也是精确的。在Python中,有两种除法,一种是/:
>>> 10 / 3
3.3333333333333335
/ 除法计算的结果是一个浮点数,即使两个整数被精确除,结果也是一个浮点数:
>>> 9 / 3
3.0
另一种除法是//,称为地板除法,两个整数的除法仍然是整数:
>>> 10 // 3
3
你没看错,整数的除法 // 始终是整数,即使它不可整除。要进行精确除法,只需使用 /。
因为 // 除法只取结果的整数部分,Python 还提供了取余运算,可以得到两个整数相除的余数:
>>> 10 % 3
1
不管是整数除//取余数,结果总是整数,所以整数运算的结果总是精确的。
字符编码
ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。
字母A用ASCII编码是十进制的65,二进制的01000001;
ASCII中的字符0是十进制的48,二进制是00110000,注意字符'0'和整数0是不同的;
汉字已经超出了ASCII编码的范围。 Unicode 编码是十进制的 20013 和二进制的 01001110 00101101。
如果统一成Unicode编码,乱码问题从此就消失了。但是,如果你写的文字基本上都是英文的,那么使用Unicode编码需要的存储空间是ASCII编码的两倍,在存储和传输方面非常不经济。
因此,本着节约的精神,将Unicode编码转换为“变长编码”的UTF-8编码应运而生。 UTF-8编码根据不同的数字大小将一个Unicode字符编码成1-6个字节,常用的英文字母编码成1个字节,汉字通常是3个字节,只有非常稀有的字符才会被编码。编码为 4-6 个字节。如果你要传输的文本包含大量英文字符,使用 UTF-8 编码可以节省空间
UTF-8 编码还有一个额外的好处,即 ASCII 编码实际上可以被视为 UTF-8 编码的一部分,所以很多只支持 ASCII 编码的遗留软件可以继续在 UTF-8 编码下工作。
弄清楚 ASCII、Unicode 和 UTF-8 的关系后,我们可以总结一下计算机系统中常用的字符编码的工作方法:
在计算机内存中统一使用Unicode编码,当需要保存到硬盘或需要传输时,转换为UTF-8编码。
使用记事本编辑时,将从文件中读取的 UTF-8 字符转换为 Unicode 字符并存储在内存中。编辑后将Unicode转换为UTF-8,保存时保存到文件中:
浏览网页时,服务器将动态生成的 Unicode 内容转换为 UTF-8 传输给浏览器:
所以你看到很多网页的源码都会有类似<meta charset="UTF-8" />的信息,说明网页是用UTF-8编码的。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python应该安装pycharm吗08/15
- ♥ 如何检查一个元素是否在python的列表中10/02
- ♥ 如何卸载mongodb11/10
- ♥ python如何根据字典的key删除元素12/22
- ♥ Python中xlrd读取的错误处理09/28
- ♥ python中如何判断文件结束12/08
内容反馈