
7.3 Python中的常量
Python中的常量包括数字(数值)、字符串、布尔值和空值。
7.3.1 数字
自Python 3以后,数字(值)型常量包括3类,分别是整数(int)、浮点数(float)和复数(complex)。
1.整数
它表示不包含小数点的实数。
在32位计算机上,标准整数的取值范围为-231~231-1,即-2147483648~2147483647;在64位计算机上,标准整数的取值范围为-263~263-1,即-9223372036854775808~9223372036854775807。
1)长整数
顾名思义,长整数就是取值范围很大的整数。Python长整型的取值范围仅与计算机支持的虚拟内存大小有关,也就是说,Python可表达非常大的整数,例如,x=34567843435577687678687342345。
Python 2中的整数有整数和长整数之分;但自Python 3以后,整数被统一为一种类型,它们均为长整型。
2)整型常量的表示形式
整型常量可以十进制、八进制、十六进制和二进制4种形式表示。
八进制整数以“0o”或“0O”开始,例如,0o100和0O100均代表整数64。
十六进制整数以“0x”或“0X”开始,例如,0x100和0X100均代表整数256。
二进制整数以“0b”或“0B”开始,例如,0b1010和0B1010均代表整数10。
以上说明,除普遍熟悉的十进制表示形式外,其余3种整数表示形式均以数字0为前导,其后分别跟一个不区分大小写的字母。
2.浮点数
它代表包含小数点的数字,如0.378、0.0。
浮点型常量有十进制表示法和科学计数法两种表示方法。以0.378为例,十进制的表示形式为0.378,科学计数法的表示形式可以是0.378e0、0.378E0、3.78e-1或3.78E-1等。
由此可见,科学计数法以字母e或E作为幂的符号,以10为基数。其表示形式如下:
<x>e<y>
<x>e<y>等于x×10y。
需要注意的是,尽管0.0和0的值相同,但是,由于两者的类型不同,所以在计算机内部的表示形式完全不同。
3.复数
它代表可用a+bj或a+bJ形式表示的数字,a 和b 是实数,j是虚数单位。虚数单位是二次方程式x2+1=0的一个解。
虚数单位j不区分大小写。
例如:
>>> x=3+4j >>> print(x) (3+4j)
7.3.2 字符串
字符串是一个由若干个字符组成的序列。
1.字符串的表示
字符串可分为单行字符串和多行字符串。字符串常量使用配对的单引号(')或双引号(")将文字包围起来,但是两者的功能和意义完全相同。
例如:
'我是字符串’ "我是字符串" "this is string" 'this is string'
Python的字符串分为两种:普通字符串和Unicode字符串。
1)普通字符串
普通字符串是用引号声明的字符串。
举例如下:
>>> str1='hello! ' >>> str2="I like Python" >>>
2)Unicode字符串
Unicode字符串是在引号之前加上字母“u”声明的字符串。一般而言,在中文字符串前往往需要加上“u”。
举例如下:
>>> str3=u’你好,兄弟!' >>> str4=u"我想学好Python" >>>
不过,在Python 3以后,上述两种字符串被统一了:直接使用引号即可,不再需要使用“u”来区分普通字符串和Unicode字符串。
Python 3这样修改的主要目标是,把Python 2中的普通字符串和Unicode字符串类型合并为一个单独的字符串类型(str)。因此,从本质上来说,Python 3中的字符串只有两种类型:str和bytes。前者代表一般字符串,后者代表字节型字符串。字节型字符串需要在字符串前以“b”引导。
举例如下:
>>> B = b'spam' >>> S = 'eggs' >>> type(B), type(S) (<class 'bytes'>, <class 'str'>) >>>
2.转义字符
当需要在字符串中使用特殊字符时,Python通过转义字符的形式加以表示。反斜杠(\)是转义字符的前缀,紧随其后的是一个具有特定含义的小写字母或字符。例如,需要在单引号包围的字符串中使用单引号(')或双引号("),则其语句如下:
>>> ss=’字符串中使用单引号\’的情况’ >>> ss "字符串中使用单引号’的情况" >>> ss=’字符串中使用双引号\"的情况’ >>> ss '字符串中使用双引号"的情况’ >>>
Python常用的转义字符如表7-1所示。
表7-1 Python常用的转义字符

3.多行字符串
多行字符串是使用配对的三引号(''’或""")包围的文本。
例如:
>>> '''this is first line 'this is second line' "this is third line" ''' 'this is first line\n\'this is second line\'\n"this is third line"\n' >>>
可以在多行字符串中使用单引号或双引号。
在本例中,同时使用了多行字符串的两种表达方式:第一种是直接使用配对的三引号;第二种是在一行字符串中使用回车换行转义字符来表达多行。
4.关于Unicode
由于ASCII码无法表示现行的所有文字和符号,所以,需要一种可代表所有字符和符号的编码,这种编码就是Unicode。
1)Unicode
Unicode码又被称为统一码、万国码或单一码,它是一种在计算机上使用的字符编码规范。Unicode码是为了解决传统的字符编码方案的局限性而产生的,它为每种语言中的每个字符设定统一并且唯一的二进制编码。它规定所有的字符和符号最少由16位二进制(2字节)加以表示,因此可表达至少216= 65536种字符。
2)UTF-8
UTF-8码是对Unicode编码的压缩和优化,它不再沿用每个字符最少使用2字节的规定,而是将所有的字符和符号进行分类:ASCII码表中的字符以1字节表示,欧洲字符以2字节表示,东亚字符以3字节表示。例如,中文字符属于东亚字符,所以采用3字节加以编码。UTF-8码可表示所有的字符和符号,它是Python内置的编码格式。
7.3.3 布尔值
布尔值通常用来判断条件是否成立。
Python中有两个布尔值,即True(逻辑真)和False(逻辑假)。布尔值区分大小写,也就是说,true和TRUE不等同于True。
举例如下:
>>> x=4 >>> x>5 False >>> x<7 True >>>
与布尔值相关的内置函数主要是bool(),该函数用于判断某个表达式的布尔值是真还是假。例如,bool(23)为真,bool(0)为假,bool(5>3)为真。
7.3.4 空值
Python中有一个特殊类型的常量,即空值(None)。
与0、空字符串("")、空格(" ")不同,None表示什么都没有。对此一定要引起足够的注意,不要将它们混淆。
None与任何其他的数据类型比较,永远返回False。
None可赋值给任何变量。
例如:
>>> x=None >>> x==3 False >>> x==None True >>>
那么,空值的意义是什么?
举一个简单的例子加以说明:返回空值的函数,也就是return None的函数。
>>> def ff(): return None >>>
一个空值对象,在被判断时,它永远是False。例如:
>>> x=None >>> if x: print("空值演示") else: print("None就是我") None就是我 >>>
遇到以下这些形式,Python将作为空值处理:
· None。
· False。
· 0、0.0。
· ''(空字符串), ()、[]、{}(无元素的元组、列表、字典)。
因此,空值使得很多判断更为简化。例如:
>>>a='' #空字符串 >>> if a: print('a is not empty') else: print('a is a empty string') a is a empty string >>> x=None >>> if x: print("xx") else: print("yy") yy >>> a=0 >>> if a: print('a非0') else: print('a为0') a为0 >>> ll=[] >>> if ll: print("列表不为空") else: print("列表为空") 列表为空 >>>
空值的作用和意义由此可见一斑!