在Python中能够直接处理的数据类型有以下几种:
目录
一,整型
python 可以处理任意大小的整数,这当然也包括负整数了,在python的程序中,整形的表示方法和数学上的完全一样。比如:1,1000,-9,0等。
当然,整数也可以用十六进制的方法来表示,这样比较方便,十六进制用0x前缀和0-9、a-f表示,比如,0xff0、0xabcd4这些来表示。
1、标准整形
python的标准整形是最通用的数字类型,在32位的机器上取值范围-2^31到2^31-1,如果是64位的机器的话数据就是64位的。python的标准整形等价于C语言的长整形(有符号)。
2、长整形
值得一提的是python的长整形,跟其他语言的长整形的取值范围是32或64位。python的长整形是与你的机器的支持的(虚拟)内存大小有关。可以这么说,python可以轻松表达很大的整数。
当你的程序需要比标准类型更大的整数是,你可以在整数的后面加上L(大小写都可以)。比如
45677777788888L、0xkdkjdjdjjdjjdjdjdjL。
建议使用python的核心风格:用大写字母“L”表示长整形
二、浮点型
浮点型就是指的是小数,为什么叫做浮点数呢?是因为按照科学数法表示的,python的浮点型类似于C语言中的double类型。
是双精度浮点型。可以直接用十进制课科学技术法表示。每个浮点型占8个字节(64位)。实际的精度依赖于机器的架构和python解释器的编译器。
浮点型值通常用一个小数点和一个可选的后缀e(大写或小写,表示科学计数法)。在e和指数之间可以用+和-来表示指数的正负。比如:
0.0 -777. 1.6 96e3 * 1.0 -1.609E-19
三 、复数
一个实数和虚数来表示一个复数。一个复数是一对有序的浮点型(x,y),表示x+yJ,其中x表示实数部分,也表示虚数部分。
python关于复数的几个概念:
- 虚数不能单独存在,他们总是和一个0.0的实数部分一起来构成一个复数
- 复数由实数和虚数构成
- 表示虚数的语法:real+imagj
- 实数部分和虚数部分都是浮点型
- 虚数部分必须要有后缀J或j
比如:
64.375+1j 4.32-8.5j 1.23e-045+6.7e+089j
复数的内建属性
复数拥有conjugate(共轭的意思)的方法。调用它可以返回该复数的共轭复数对象。
- 复数属性
- mum.real 复数的实部
- mum.img 复数的虚部
- mun.conjugate 返回复数的共轭复数
四、字符串
print语句可以向屏幕上输出指定的文字。比如输出’hello, world’,用代码实现如下:
print ('hello, world')
1、字符串的表示
字符串是以“”和”包含起来的任意文本,比如 ‘abc’、”cba”等等。注意‘’和“”只是一种表示的方式,表示字符串的一部分,这样问题就来了,如果字符串本身就带有‘ 怎么办呢?比如,我们要表示字符串 I’m OK ,这时,可以用” “括起来表示:
"I'm OK"
类似的,如果字符串包含“,我们就可以用 ’’括起来表示:
'I like "python" '
可是问题又来了,如果字符串‘ 和 ”“ 都包含怎么办啊?这种情况就需要一些特殊的字符进行 转义了,python 字符串使用 \ 进行转义。比如 Bod said “I’m OK”.
由于 ‘ 和 “ 会引发歧义,所以,我们要在它前面插入一个 \ 表示这是一个普通的字符串,不代表字符的起始,所以这样表示:
'Bod said \"I\'m OK\". '
请注意:转义字符不计入字符串的内容中
常用的转义字符还有:
- \n 表示换行
- \t 表示一个制表符
- \\ 表示字符的本身
2、python 中raw字符串于多行字符串
如果一个字符串中有很多需要转义的字符,对于每一个字符都需要进行转义的话很麻烦的。为了解决这个问题,我们可以在字符串前面 加一个前缀 r ,表示这是一个raw 字符串,里面的字符就不用转义了。
r'\($_$)/\($_$)/'
但r’…….’ 的表示方法不能表示多行字符串,也不能表示 ‘ 和 ”的字符串啊?
需要表示多行字符串的话。可以使用 ”’>>>”’ 表示。
''' line 1
line2
line3
'''
上面的跟下面的表示方法完全一样的
'line 1\line2 \line3 '
还可以在多行字符串前加上 r , 把多行字符串也变成一个raw字符串。
r'''Python is created by "Guido".
It is free and easy to learn.
Let's start learn Python in qtj!'''
3、python中的Unicode字符
字符串中还有一个编码的问题,因为计算机只能处理数字,就必须把文本转换成为数字才能处理。所以出现了ASCll 编码。
这个编码是用来表示英文的,但是要表示中文怎么办?
所以,中国制定了GB2312,用来把中文编进去了。类似,其他国家也有这个问题,为了统一所有文字,Unicode就出现了。
这样就不会出现乱码了。比如
print u'你好'
请注意:不加 u ,中文不能正常的显示,转义字符和多行显示照样能使用
如果中文字符在python环境中 出现 错误 UnicodeDecodeError,这是因为.py文件保存的格式有问题。可以在第一行添加注释
# -*- coding: utf-8 -*-
目的是告诉Python解释器,用UTF-8编码读取源代码。
五、布尔类型
布尔类型只有 True 和 False 两种值,但是布尔类型的运算有以下几种;
与运算 :只有两个布尔值都是True 时,结果才为 True
True and True # ==> True
True and False # ==> False
False and True # ==> False
False and False # ==> False
或运算:只有一个位True,结果就是 True
True or True # ==> True
True or False # ==> True
False or True # ==> True
False or False # ==> False
非运算:把True变为False,或者把False变为True:
not True # ==> False
not False # ==> True
在python中,布尔类型可以跟其他的数据做 and 、or、not运算,比如
a = True
print a and 'a=T' or 'a=F'
计算的结果不是布尔类型,而是字符串’a=t’,为什么呢?
因为python把 0、空字符串、None (空语句)看成是False ,其他的数值和非空的字符串看成了True ,
and 和 or 运算的一条重要法则:短路计算。
1. 在计算 a and b
时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
2. 在计算 a or b
时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。
所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。
六、python 整数与浮点数的运算
python的四则运算规则和数学上的四则运算规则完全一样。
基本运算:
1 + 2 + 3 # ==> 6
4 * 5 - 6 # ==> 14
7.5 / 8 + 2.1 # ==> 3.0375
使用括号可以提升优先级,这和数学运算完全一致,注意只能使用小括号,但是括号可以嵌套很多层:
(1 + 2) * 3 # ==> 9
(2.2 + 3.3) / (1.5 * (9 - 0.3)) # ==> 0.42145593869731807
和数学运算不同的地方是,Python的整数运算结果仍然是整数,浮点数运算结果仍然是浮点数:
1 + 2 # ==> 整数 3
1.0 + 2.0 # ==> 浮点数 3.0
但是整数和浮点数混合运算的结果就变成浮点数了:
1 + 2.0 # ==> 浮点数 3.0
为什么要区分整数运算和浮点数运算呢?这是因为整数运算的结果永远是精确的,而浮点数运算的结果不一定精确,因为计算机内存再大,也无法精确表示出无限循环小数,比如 0.1
换成二进制表示就是无限循环小数。
那整数的除法运算遇到除不尽的时候,结果难道不是浮点数吗?我们来试一下:
11 / 4 # ==> 2
Python的整数除法,即使除不尽,结果仍然是整数,余数直接被扔掉。不过,Python提供了一个求余的运算 % 可以计算余数:
11 % 4 # ==> 3
如果我们要计算 11 / 4 的精确结果,按照“整数和浮点数混合运算的结果是浮点数”的法则,把两个数中的一个变成浮点数再运算就没问题了:
11.0 / 4 # ==> 2.75