python学习_Python中的关键词梳理
楔子

在日常的开发过程中,Python的各类关键字(或者叫关键词)必不可少,那么,Python究竟有多少个关键字呢,每个关键字你都认识吗,它们的使用场景又是什么呢?本文将一一梳理如下。
关键字(Keyword)的定义
在编程中,关键字(Keyword)是编程语言的“保留词”,它对解释器而言代表着某种特殊含义。
因此,这些被编程语言预先定义和使用的关键字,是不能用作程序代码中的变量名、函数名及其他标识符的。
Python 中的关键字
Python目前共有33个关键字,可以通过keyword库去获取所有的关键字列表:
代码输入:
import keyword
# 使用Kwlist方法打印所有的Python关键字
print ("The list of keywords is : ")
print (keyword.kwlist)
代码输出:
The list of keywords is :
['False', 'None', 'True', 'and', 'as', 'assert', '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']
关键字列表
| and | as | assert | break |
|---|---|---|---|
| class | continue | def | del |
| elif | else | except | False |
| finally | for | from | global |
| if | import | in | is |
| lambda | None | nonlocal | not |
| or | pass | raise | return |
| True | try | while | with |
| yield |
如何判断是否是Python关键字
同样,可以通过keyword的内置方法去做判断:
代码输入:
import keyword
# 判断是否是关键字
print(keyword.iskeyword('hello'))
print(keyword.iskeyword('class'))
代码输出:
False
True
让我们用一些例子对每个关键字进行讨论吧。
关键字梳理
True, False, None
-
True:用来表示布尔真。如果表达式为真,则打印“True”。
-
False:用来表示布尔假。如果表达式为假,则打印“False”。
-
None:这是一个特殊的常量,用于表示空值或无效值。
此处注意:0以及任何空容器(例如空列表、空字典等)都不是None。
None是NoneType类的对象。True、False、None都可以当做不可变类型看待(类似int,str,tuple),因为所有引用他们的变量都指向同个内存地址。
代码输入:
print(False == 0)
print(True == 1)
print(True + True + True)
print(True + False + False)
print(None == 0)
print(None == [])
a = None
b = None
print(id(a) == id(b))
代码输出:
True
True
3
1
False
False
True
and, or, not, in, is
-
and:是python中的逻辑运算符。“and”返回第一个布尔为假的值,如果没有找到就返回最后的值. "and"的真值表如下:
A B A and B True True True True False False False True False False False False 3 and 0 returns 0
3 and 10 returns 10
10 or 20 or 30 or 10 or 70 returns 10
与像C语言这样的逻辑运算符总是返回布尔值(0 或 1)不同,因此上述语句可能有点令人困惑。按照python 文档的解释如下:
表达式 x and y 首先计算 x;如果 x 为假,则返回其值;否则,计算 y 并返回结果值。
表达式 x or y 首先计算 x;如果 x 为真,则返回其值;否则,计算 y 并返回结果值。
请注意,and 或 or 语句返回的不是True和False,而是返回布尔值为True和False的变量/表达式的值。
这有时很有用,例如要做这么一件事: s 是一个字符串,如果它是空的,则将其替换为默认值foo。则写法如下即可:
s = s or 'foo'
# 如果不了解这个特性,代码可能如下:
s = s if s else 'foo'
PS. not 表达式/参数 无论其参数的类型如何,它一定都会返回布尔值(例如,not 'foo' 会返回 False)
- or:是python中的逻辑运算符。“or” 返回第一个布尔为真的值,如果没有找到就返回最后的值。“or”的真值表如下所示:
| A | B | A or B |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
3 or 0 returns 3
3 or 10 returns 3
0 or 0 or 3 or 10 or 0 returns 3
类似and。
- not:此逻辑运算符用来反转布尔值。
- in:该关键字用来检查容器(list,dict,set等)内的元素是否包含要检测的值。该关键字也用于循环容器。
- is:此关键字用来检测对象的一致性,即检查两个对象是否指向同一内存地址。
print(0 or 0 or 3 or 10 or 0)
Output:3
print(3 and 10)
Output:10
print(not True)
Output:False
print('ai' in 'bain')
Output:True
for i in 'bain':
print(i,end=' ')
Output:b a i n
print({} is {})
Output:False
a = 1
b = 1
print(a is b)
Output:True # 对于不可变类型,内存地址相同,变量指向同一内存地址
print({} is {})
Output:False # 对于可变类型,内存地址不相同,变量指向不同内存地址
for、while、break、continue
- for:此关键字用于创建循环语句。
- while:类似“for”,用于创建循环语句。
- break: 该关键字用于跳出循环体并将执行权传递给紧跟在循环之后的语句。
- continue:该关键字会跳过循环的当前迭代进入下一迭代,但不结束循环。
代码输入:
# 使用for循环
for i in range(10):
print(i, end = " ")
# 当循环到6时,跳出循环,执行循环体后面的print语句
if i == 6:
break
print()
# 使用while循环
i = 0
while i <10:
# 当i=6时,跳出当前迭代,进入下一迭代,并不结束循环
if i == 6:
i+= 1
continue
else:
# 当i不等于6时,打印i,并用空格分开
print(i, end = " ")
i += 1
代码输出:
0 1 2 3 4 5 6
0 1 2 3 4 5 7 8 9
if、else、elif
- if:用于条件判断的控制语句。表达式为真值则进入“if”语句块。
- else:用于条件判断的控制语句。表达式为假值进入“else”语句块。
- elif:用于条件判断的控制语句。它是“ else if ”的缩写
代码输入:
i = 20
if (i == 10):
print ("i is 10")
elif (i == 20):
print ("i is 20")
else:
print ("i is not present")
代码输出:
i is 20
def
def 关键字用于声明用户自定义的函数。
# def keyword
def fun():
print("Inside Function")
fun()
代码输出:
Inside Function
Return, Yield
- return :此关键字用于从函数返回值。
- yield :此关键字与 return 语句类似,但用于返回生成器。
# Return 关键字
def fun():
S = 0
for i in range(10):
S += i
return S
print(fun())
# Yield 关键字
def fun():
S = 0
for i in range(10):
S += i
yield S
for i in fun():
print(i, end=' ')
代码输出:
45
0 1 3 6 10 15 21 28 36 45
class
class关键字用于声明用户自定义的类。
class Dog:
# 类属性
attr1 = "mammal"
attr2 = "dog"
# 实例方法
def fun(self):
print("I'm a", self.attr1)
print("I'm a", self.attr2)
# 实例化类,得到一个对象
Rodger = Dog()
# 调用类属性和实例方法
print(Rodger.attr1)
Rodger.fun()
代码输出:
mammal
I'm a mammal
I'm a dog
With
with关键字用于将一些逻辑的执行包装在上下文管理器定义的方法中。在运行函数之前和运行函数之后执行一些操作(最常见的就是with open,用于最后关闭文件,如果不用with,则需要显式的写出close)。
# using with statement
with open('file_path', 'w') as file:
file.write('hello world !')
as
as关键字用于为导入的模块创建别名。即给导入的模块一个新名称。例如,导入math,别名为 mymath。
import math as mymath
print(mymath.factorial(5))
Out:120
pass
pass是python中的空语句。执行此语句时不具体执行任何逻辑。用作占位符防止发生缩进错误。(比如我先定义了很多需要用到的函数,但是还没想好怎么写内部逻辑,先写个pass在函数体防止IDE执行报错;或者一些抽象函数也会用到pass)
n = 10
for i in range(n):
# 用作占位符,等待后续增加具体代码
pass
Lambda
Lambda关键字用于用于创建小型匿名函数。 Lambda 函数可以接受任意数量的参数,但只能拥有一个表达式。 这个表达式会被计算并返回结果。
# Lambda keyword
g = lambda x: x*x*x
print(g(7))
Output:343
Import, From
- import:此语句用于将特定模块导入到当前程序中。
- from :通常与 import 一起使用,from 用于指定从什么模块导入。
# import keyword
import math
print(math.factorial(10))
Output:3628800
# from keyword
from math import factorial
print(factorial(10))
Output:3628800
try, except, raise, finally, and assert

- try :该关键字用于异常处理:执行“try”代码块中的代码,如果有任何类型的错误,就会跳到except语句去捕获。
- except :与“try”一起使用以捕获异常。
- finally :无论“try”块有无异常,“finally”的块总是最后被执行。
- raise:可以使用 raise 关键字显式地引发异常
- assert:断言关键字,此函数用于调试目的。通常用于检查代码的正确性。如果一个语句被评估为真(assert True),则什么也不会发生,但是当它为假时(assert False),会引发“ AssertionError ”。也可以打印带有错误的消息,用逗号分隔。
a = 4
b = 0
try:
# 可能存在异常的代码块
k = a//b
print(k)
# 处理除0异常
except ZeroDivisionError:
print("Can't divide by zero")
# 无论代码被捕获异常,都执行finally块内的语句
finally:
print('This is always executed')
# assert断言
print ("The value of a / b is : ")
assert b != 0, "断言b不是0,如果是0,则抛出AssertionError异常"
print (a / b)
代码输出:
Can't divide by zero
This is always executed
The value of a / b is :
AssertionError: Divide by 0 error
del
del 用于删除对对象的引用(需要先了解python对内存回收的引用计数机制)。可以使用 del 删除任何变量或列表值。
my_variable1 = 20
my_variable2 = "GeeksForGeeks"
# 检查变量 my_variable1 和 my_variable2 是否存在
print(my_variable1)
print(my_variable2)
# 删除这两个变量对其值的引用
del my_variable1
del my_variable2
# 再次检查变量 my_variable1 和 my_variable2 是否存在
print(my_variable1)
print(my_variable2)
代码输出:
20
GeeksForGeeks
NameError: name 'my_variable1' is not defined
Global, Nonlocal

- global:此关键字用于将函数内部的变量声明为全局变量。
- nonlocal :此关键字的作用类似于 global,此关键字声明一个变量为外部函数的变量。
PS. 具体知识可以去查询“Python中变量的作用域”相关知识。
# 全局变量
a = 15
b = 10
def add():
c = a + b
print(c)
add()
def fun():
var1 = 10 # 局部变量
def gun():
# 声明嵌套函数内部的变量为上一层函数的变量(指向同一块内存地址)
nonlocal var1
var1 = var1 + 10
print(var1)
gun()
fun()
代码输出:
25
20
总结
本文梳理了python内所有关键字的含义及基本使用示例,希望对你有帮助~
本文大量参照了https://www.geeksforgeeks.org/python-keywords/的内容,目的是技术分享,如有侵权,请联系我删除。
希望大家能有所收获~

浙公网安备 33010602011771号