将以下代码保存为 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 <module>
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 | 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 "<stdin>", line 1
class="This is a class"
^
SyntaxError: invalid syntax
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/21382.html