一文读懂python3中的所有33个关键字及其用法

学习python,首先需要熟悉一下python的33关键字。

直接上表:(除前三个关键字,其余按字母表顺序排序)

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

 依次扼要说明一下:

1. False。

python中的布尔类型,与True相对。

2. None。

None是python中特殊的数据类型'NoneType', None与其他非None数据相比,永远返回False;如下测试:

3. True。

python中的布尔类型,与False相对。

4. and。

 逻辑判断语句‘与’,and左右两边都为真,则判断结果为真,否则都是假。

5. as。

1) import numpy as np;将用一个简短的np来替代numpy;

2)结合with...as使用。

demo:

file = open('b.txt','w')
with file as f:
    data = f.write('你好,世界!\n')
    f.close()
with open('b.txt','r') as f:
    data = f.read()
    print(data)

6. assert。

python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达为假。可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常

assert的异常参数,其实就是在断言表达式后添加字符串信息,用来解释断言并更好的知道是哪里出了问题。格式如下:

    assert expression [, arguments]
    assert 表达式 [, 参数]

demo:

7. break。

跳出循环语句。

demo:

for i in range(4):
    print("-----%d-----" %i)
    for j in range(5):
        if j > 2:
            break
        print(j)

8. class。

python里面的类定义。主要是封装,继承,多态的一些使用。

class Person(object):#(括号内为父类,object类是所有类的父类)
    def __init__(self,name,age): #构造函数,类似于java中的this,
        # 需要把self放在类实例方法的第一个参数
        self.name = name
        self.age = age



obj = Person("lanluyu", 26) #将name和age封装成类,并赋予对象obj。

9.  continue。

跳出当此循环,在当此循环后面的语句则不执行;

demo:

for i in range(10):
    if i ==3:
        print('{:^20}'.format('lanluyu'))
        continue
    print('{:^20}'.format(i))  
print('{:^20}'.format('end'))

 上面的format中的含义是使其在一定宽度中居中,详细细节可参考:https://blog.csdn.net/lanluyug/article/details/80245220

 

10. def。

python中的函数定义

def add(a,b):
    print('{:^20}'.format(a+b))

add(1,2)

11. python和java类似,具备GC机制,当数据没指向时,会将数据回收;而del关键字只是删除变量。

a = 1
b = a
del a
print('{:^20}'.format(b))
print('{:^20}'.format(a))

 结果能打印b的值,但a变量已不存在。

12. elif。

在条件语句中和if一起使用,相当于c中的else if;

age = 26
if age > 60:
    print('{:^20}'.format("老人"))
elif age >30:
    print('{:^20}'.format("中年人"))
else:
    print('{:^20}'.format("祖国的花朵"))

 

13. else。

与if联合使用。同上。

14. except。

python中的异常机制关键字。和try结合使用。

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print("Error: 没有找到文件或读取文件失败")
else:
    print("内容写入文件成功")
    fh.close()

 

15.  finally。

异常机制中与try使用。且无论try语句中是否抛出异常,finally语句块一定会被执行。

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print("Error: 没有找到文件或读取文件失败")
else:
    print("内容写入文件成功")
finally:
    fh.close()
    print("文件关闭成功")

 

16. for。

循环语句。

for i in range(10):
    print('{:^20}'.format(i))

 

17. from。

导入模块的变量或函数。可参考上述2.as中的示例。

需要注意的是,使用from导入的变量容易被覆盖,而import则不会发生这种情况;

18. global。

用处:一般在局部或函数内对全局变量进行修改,须在局部用global声明变量,不然无法修改。

#global关键字(内部作用域想要对外部作用域的变量进行修改)
num = 1
def fun():
     global num
     num = 123
     print(num)

fun()
print(num)

 

19. if。

条件语句。参考12.elif。

20. import。

导包操作。参考5. as。

21. in。

判断键是否存在与字典中。

dict = {'Name': 'lanluyu', 'Age': 26}
 
# 检测键 Age 是否存在
if  'Age' in dict:
    print("键 Age 存在")
else :
    print("键 Age 不存在")
 

 

22. is。

is关键字是判断两个变量的指向是否完全一致,及内容与地址需要完全一致,才返回True,否则返回False。

python中的is通常与==一起分析;==通常只是对内容进行对比,一致则返回True。

23. lambda。

匿名函数,此关键字可以用一行实现一个函数。

# 可写函数说明
sum = lambda arg1, arg2: arg1 + arg2
 
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))

 

24. nonlocal。

nonlocal是在Python3.2之后引入的一个关键字,它是用在封装函数中的,且一般使用于嵌套函数的场景中

在Python 2.x中,闭包只能读外部函数的变量,而不能改写它。

def a():
  x = 0
  def b():
    print(locals())
    y = x + 1
    print(locals())
    print(x, y)
  return b
 
a()()

 

def a():
  x = 0
  def b():
    nonlocal x
    x += 1
    print (x)
  return b
 
a()()

25. not。

逻辑操作符,‘非’;

‘and’、‘or’和‘not’的优先级是not>and>or;

非0或者非False才返回True。

26. or。

逻辑操作符,‘或’;

或运算符会触发短路现象,即第一个条件为真,则返回第一个条件的值;

27. pass。

一般使用在空函数上,占位符。

def sample(n_samples):
    pass

 当一个函数的具体实现没有策划好时,可以用pass来设置空函数。

28. raise。

python异常机制。有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出,raise关键字就是python主动抛异常设定的关键字。

一段主动抛异常的完整示例:

class CustomError(Exception):
    def __init__(self,ErrorInfo):
        super().__init__(self) #初始化父类
        self.errorinfo=ErrorInfo
    def __str__(self):
        return self.errorinfo

if __name__ == '__main__':
    try:
        raise CustomError('客户异常')
    except CustomError as e:
        print(e)

 29. return。

保留函数最终的值,并终结程序运行;

30. try。

python异常机制。可参考except,finally关键字。

31. while。

循环语句。while 后接条件,若条件为真则运行后面的代码块。

x = 5
while(x>0):
    print('{:^20}'.format(x))
    x = x - 1

 

32. with。

一般结构为with...as的使用方式。

with后面返回的对象要求必须两__enter__()/__exit__()这两个方法,而文件对象f刚好是有这两个方法的,故应用自如。

可通过重写上述两个函数修改

class Test:
    def __enter__(self):
        print('__enter__() is call!')
        return self
 
    def dosomething(self):
        x = 1/0
        print('dosomethong!')
 
    def __exit__(self, exc_type, exc_value, traceback):
        print('__exit__() is call!')
        print(f'type:{exc_type}')
        print(f'value:{exc_value}')
        print(f'trace:{traceback}')
        print('__exit()__ is call!')
        return True
 
 
with Test() as sample:
    sample.dosomething()
 

33. yield。

 任何使用yield的函数都称之为生成器,而生成器通常可理解成迭代器。

如下,在python3.4.3之后需要使用__next__()来取下一个值。

参考文献:

【1】class参考。 https://www.cnblogs.com/chengd/articles/7287528.html

【2】break和continue参考。https://www.cnblogs.com/lijunjiang2015/p/7733859.html

【3】异常处理参考 https://www.runoob.com/python/python-exceptions.html

【4】nonlocal参考 https://blog.csdn.net/chain2012/article/details/7415602

【5】raise参考文献 https://blog.csdn.net/skullFang/article/details/78820541

【6】with参考 https://blog.csdn.net/lxy210781/article/details/81176687

【7】yield参考 https://blog.csdn.net/zxpyld3x/article/details/79181834

猜你喜欢

转载自blog.csdn.net/lanluyug/article/details/89476401
今日推荐