Python全案例学习与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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形式表示的数字,ab 是实数,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("列表为空")

列表为空
>>>

空值的作用和意义由此可见一斑!