python学习_Python中的关键词梳理


楔子

image-20220524161536537

在日常的开发过程中,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

image-20220524195923502

  • 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

image-20220524200250850

  • 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/的内容,目的是技术分享,如有侵权,请联系我删除。

希望大家能有所收获~

posted @ 2023-12-15 18:07  故君子慎为善  阅读(695)  评论(0)    收藏  举报