与 C、C++、Java、C# 等语言不同,Python 没有定义常量的关键字,意即 Python 中没有常量的概念。为了实现与其他语言中功能相近的常量,可以使用 Python 面向对象的方法编写一个“常量”模块。
将以下代码保存为 test-const.py:
import sys
class _CONSTANT:
class ConstantError(TypeError) : pass
def __setattr__(self, key, value):
if key in self.__dict__.keys():
raise(self.ConstantError, "常量重新赋值错误!")
self.__dict__[key] = value
sys.modules[__name__] = _CONSTANT()
#使用以下方式为 CONSTANT 这个“常量”赋值和调用:
CONSTANT =_CONSTANT()
CONSTANT.TEST = 'test'
print(CONSTANT.TEST)
#尝试使用以下方式为 CONSTANT 重新赋值:
CONSTANT.TEST = 'test111'
print(CONSTANT.TEST)
程序执行结果如下所示:
C:\Users\Administrator\.spyder-py3\Python test-const.py
test
Traceback (most recent call last):
File "test-const.py", line 35, in
CONSTANT.TEST = 'test111'
File "test-const.py", line 27, in __setattr__
raise(self.ConstantError, "常量重新赋值错误!")
TypeError: exceptions must derive from BaseException
可以看到,第一次为 CONSTANT.TEST 赋值后能够成功执行,当尝试为 CONSTANT.TEST 重新赋值时将会出现错误提示,这相当于起到了常量的作用。
保留字即其他语言中的关键字,是指在语言本身的编译器中已经定义过的单词,具有特定含义和用途,用户不能再将这些单词作为变量名或函数名、类名使用。Python 3.7.2 中的保留字主要有 False、None 等 35 个。
温馨提示:Python 3.7.2 中的 35 个保留字
False、None、True、and、as、assert、async、await、break、class、continue、def、del、elif、else、except、finally、for、from、global、if、import、in、is、lambda、nonlocal、not、or、pass、raise、return、try、while、with、yield.
Python 2.X 中的 exec 和 print 等保留字在 3.X 中已经改为内置函数。 Python 3.7.2 中 35 个保留字的含义及作用如表 1 所示。
表 1:Python 3.7.2 中 35 个保留字的含义及作用
序号
保留字
说明
1
and
逻辑与操作,用于表达式运算
2
as
用于转换数据类型
3
assert
用于判断变量或条件表达式的结果
4
async
用于启用异步操作
5
await
用于异步操作中等待协程返回
6
break
中断循环语句的执行
7
class
定义类
8
continue
继续执行下一次循环
9
def
定义函数或方法
10
del
删除变量或序列的值
11
elif
条件语句,与 if、else 结合使用
12
else
条件语句,与 if、else 结合使用;也可用于异常或循环语句
13
except
包含捕获异常后的处理代码块,与 try、finally 结合使用
14
False
含义为“假”的逻辑值
15
finally
包含捕获异常后的始终要调用的代码块,与 try、except 结合使用
16
for
循环语句
17
from
用于导入模块,与 import 结合使用
18
global
用于在函数或其他局部作用域中使用全局变量
19
if
条件语句,与 elif、else 结合使用
20
import
导入模块,与 from 结合使用
21
in
判断变量是否在序列中
22
is
判断变量是否为某个类的实例
23
lambda
定义匿名函数
24
None
表示一个空对象或是一个特殊的空值
25
nonlocal
用于在函数或其他作用域中使用外层(非全局)变量
26
not
逻辑非操作,用于表达式运算
27
or
逻辑或操作,用于表达式运算
28
pass
空的类、方法或函数的占位符
29
raise
用于抛出异常
30
return
从函数返回计算结果
31
True
含义为“真”的逻辑值
32
try
测试执行可能出现异常的代码,与 except, finally 结合使用
33
while
循环语句
34
with
简化 Python 的语句
35
yield
从函数依次返回值
在 Python 环境下可以执行以下命令查看当前版本的保留字:
>>>import keyword
>>>keyword.kwlist
程序执行结果如下:
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
若将保留字作为标识符并赋值将会得到语法错误,如下所示。
>>>class="This is a class"
File "", line 1
class="This is a class"
^
SyntaxError: invalid syntax