Python3 | 关键字

列举了 3.7 版本所有的关键字及其定义

Posted by Haauleon on May 14, 2021

背景

  Python 的关键字也称为保留字,是这个解释器里面已经定义好了的,具有特殊的含义。解释器也是程序,如果用户自定义的变量、函数、类等名称与保留字重名,那么解释器会提醒 SyntaxError: invalid syntax

  查看当前 Python 版本的保留字,只需要在交互模式下输入以下代码:

1
2
import keyword
keyword.kwlist

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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']


  我目前用的还是 3.7 版本,所以以上这些关键字都是 3.7 版本提供的。



关键字

False

布尔值,表示假。等同于 0,与 True 相对。

1
2
3
4
5
test = False
print(test)
print(bool(test))
print(bool([]))
print(type(test))

运行结果:

1
2
3
4
False
False
False
<class 'bool'>



None

定义 None 值,表示根本没有值。0, False, ”” 虽然是空,但不是 None。None 表示什么都没有,只有 None = None

1
2
3
4
5
6
7
8
9
class Test:

    def __init__(self):
        self.a = None

test = Test()
print(test.a)
test.a = "是可爱的巧伦呀"
print(test.a)

运行结果:

1
2
None
是可爱的巧伦呀



True

布尔值,表示真。等同于 1,与 False 相对。



and

用于连接 2 条语句,如果都是 True 则为 True。

1
2
3
a = 6
if a > 1 and a < 10: 
    print("嗯呐!")

运行结果:

1
嗯呐!



as

创建别名。

1
2
import os as a # 导入 os 后,为 os 创建别名为 a
print(a.getcwd())

运行结果:

1
/Users/haauleon/xxx/xxx/xxx/xxx



assert

在调试代码时使用,如果给定的条件为 True 则继续执行。如果为 False,则会引起 AssertionError。

1
2
3
4
5
6
7
x = []

# 如果条件返回True,则什么也不会发生:
assert x == []

#如果条件返回 False,则会引发 AssertionError:
assert bool(x) 

运行结果:

1
2
3
4
5
6
7
AssertionError                            Traceback (most recent call last)
~/xxx/xxx/xxx/xxx/test.py in <module>
      5 
      6 #如果条件返回 False,则会引发 AssertionError:
----> 7 assert bool(x)

AssertionError: 



async

被 async 修饰的函数或方法则被作为一个协程。



await

被 await 修饰的语句作为一个异步操作。



break

跳出当前的循环体。

1
2
3
4
for i in range(1,10):
    if i == 5:
        break # 从4之后的都不输出
    print(i)

运行结果:

1
2
3
4
1
2
3
4



class

定义一个类。

1
2
3
4
5
6
7
class Test:

    def __init__(self):
        self.a = 1

test = Test()
print(test.a)

运行结果:

1
1



continue

不执行循环剩余代码,直接跳循环的末尾语句。

1
2
3
4
for i in range(1, 10):
    if i == 5:
        continue # 不输出5
    print(i)

运行结果:

1
2
3
4
5
6
7
8
1
2
3
4
6
7
8
9



def

定义一个函数。

1
2
3
4
def add(x, y):
    return x + y

print(add(3, 4))

运行结果:

1
7



del

解除一个对象的定义,可以是类、变量、函数。

1
2
3
4
5
6
7
8
9
class Test:
     def __init__(self):
         self.a = 1

test = Test()
print(test.a)

del test
print(test.a)

运行结果:

1
2
3
4
5
6
7
8
9
1
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
~/xxx/xxx/xxx/xxx/test.py in <module>
      7 
      8 del test
----> 9 print(test.a)

NameError: name 'test' is not defined



elif

对于 if 不满足的条件,可以做进一步判断。



else

对于 if 和 elif 都不满足的条件进行执行。



except

try 语句中遇到异常就执行 except。

1
2
3
4
5
6
7
8
try:
    print("1")
    raise Exception("异常")
    print("3")
except Exception as e:
    print("4", e)
    print("5")
print("6")

运行结果:

1
2
3
4
1
4 异常
5
6



finally

try-except 代码段无论是否有异常,都会执行 finally。

1
2
3
4
5
6
7
8
9
10
try:
    print("1")
    raise Exception("异常")
    print("3")
except Exception as e:
    print("4", e)
    print("5")
finally:
    print("6")
print("7")

运行结果:

1
2
3
4
5
1
4 异常
5
6
7



for

循环。

1
2
for i in range(5):
    print(i)

运行结果:

1
2
3
4
5
0
1
2
3
4



from

从一个模块中导入特定的部分。

1
from time import sleep



global

定义一个全局变量,可以在函数中定义。

1
2
3
4
5
def func():
    global a 
    a = 1

print(a)

运行结果:

1
1



if

判断一个条件,成立则继续执行,不成立则跳到 elif 或 else 中。



import

导入模块。

1
import time



in
1
2
3
a = [1, 2, 3, 4, 5]
print(1 in a)
print(6 in a)

运行结果:

1
2
True
False



is

测试两个变量是否引用同一对象。注意,判断的是两个变量引用同一个对象。如果只是值相同,则返回 False。

1
2
3
4
5
6
a = ["a","b","c"]
c = ["a","b","c"]
b = a
print(a is b) 
print(c is a)
print(c is b) 

运行结果:

1
2
3
True
False
False



lambda

用于创建一个小型的行内匿名函数。

1
2
func = lambda x: x+1
print(func(4))

运行结果:

1
5



nonlocal

在嵌套函数内部使用,表示当前的变量是上一层函数的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def func1():
    a = 10
    def func2():
        nonlocal a # 如果不加 nonlocal,a 就会变为这个函数的局部变量
        a = 9
    func2()
    return a

def func3():
    b = 5
    def func4():
        b = 6
    func4()
    return b

print(func1())
print(func3)

运行结果:

1
2
9
5



not

取反。如果为 False 则返回 True。

1
2
3
print(not True)
print(not 0)
print(not "a")

运行结果:

1
2
3
False
True
False



or

用于连接 2 条语句,如果有一个为 True 则为 True。

1
2
3
a = 6
if a > 1 or a == 8: 
    print("嗯呐!")

运行结果:

1
嗯呐!



pass

占位符,防止语法检查报错。

1
2
3
4
5
6
class Test:
    def func(self):
        pass

test = Test()
test.func()

运行结果:

1



raise

用于引发一个错误。

1
2
if True:
    raise Exception("发生了一个异常")

运行结果:

1
2
3
4
5
6
Exception                                 Traceback (most recent call last)
~/xxx/xxx/xxx/xxx/test.py in <module>
      1 if True:
----> 2     raise Exception("发生了一个异常")

Exception: 发生了一个异常



return

返回。表示当前函数执行完毕,return 下一行的代码会被忽略。

1
2
3
4
5
6
7
def func():
    print(1)
    print(2)
    return 3
    print(4) 

func()

运行结果:

1
2
3
1
2
3



try

try 代码段一定先执行第一行语句,直到遇到异常。

1
2
try:
    print("1")

运行结果:

1
1



while

循环。

1
2
3
4
5
count = 3
while count:
    print("嘿嘿")
    count -= 1
print(count)

运行结果:

1
2
3
4
嘿嘿
嘿嘿
嘿嘿
0



with

用于简化错误处理,即简化:try-except-finlally

1
2
with open("test.txt") as f:
    ff = f.read()



yield

生成器。被修饰的函数或者方法即作为一个生成器。