python35个关键字_Python关键字35个

摘要

python3.x中有35个关键字,比python2.x增加了6个: False True None async await和nonlocal 且删除了exec与print。

python3.8中:

python35个关键字_Python关键字35个_第1张图片

python2.7中:

python35个关键字_Python关键字35个_第2张图片

详解(按新版图一顺序):

(1)False 和 True : 布尔值,0和1

(2)None: 空

(3)and、not 和 or: 逻辑与,逻辑非,逻辑或。

(4)as:三种用法如下

(1)起到别称的作用

>>> from decimal import Decimal as D #用自定义的D代替Decimal方法,便于下面的书写。

>>> D(0.1)+D(0.2)

Decimal('0.3000000000000000166533453694')

(2)经典的with as 用法,with后面紧跟着的对象,会调用它的__enter__方法,返回的对象会

赋值给temp

>>>with object as temp:

(3)与except组合起来,看下面,捕获到Exception对象会赋值给e

>>>try:

>>>pass

>>>except Exception as e:

>>>pass

(5)assert:断言,用于判断变量或条件表达式是否为真。

assert 断言在意义上相当于 if-not-raise,如果表达式为假,就会发生异常。

简单用法示例如下:

>>> assert 2+2==4 #正确的表达式无返回值

>>> assert 2+2==5

Traceback (most recent call last):

File "", line 1, in

AssertionError #错误的报错AssertionError

>>> assert 2+2==4,"正确啦啦啦"

>>> assert 2+2==5,"错误啦啦啦"

Traceback (most recent call last):

File "", line 1, in

AssertionError: 错误啦啦啦 #自定义的错误返回值

(6)async 和 await: 协程和挂起协程

本人新手难以理解—— 详情参考:

https://www.cnblogs.com/dhcn/p/9032461.html

(7)break 和 continue: 前者结束循环,后者结束当前当次循环。

for s in "python":

if s=='t':

continue

print(s,end='')

>>>pyhon

for s in "python":

if s=='t':

break

print(s,end='')

>>>py

(8)class:用于定义类。

(9)def:用于定义函数或方法。

(10)del:删除变量或序列的值。

(11)if,elif,else : python中的条件分支语句

(12)try ,except, finally:异常处理语句

try:

alm=int(input("请输入一个整数: "))

print(alm+1)

except:

print("输入错误")

finally: #finally中的语句无论是否发生异常,都会执行

print("程序结束")

>>>10

>11

>程序结束

>>>jsd

>输入错误

>程序结束

另:常见异常

python35个关键字_Python关键字35个_第3张图片

(13)for 和 while:遍历循环和无限循环。

(14)from 和 import :用于导入模块或引用库。

(15)global 和 nonlocal:全局变量和外层变量。

global:

a="qaq"

def foo():

global a

a=10

print(a+1)

print(a) #运行函数前

foo() #函数运行,函数里使用global关键字改变了全局变量a的值

print(a) #函数运行后

>qaq

>11

>10

nonlocal:首先,要明确 nonlocal 关键字是定义在闭包里面的。

尽管可以层层向外(上)查找变量,但是! python2 只支持最里层作用域(局部变量)和全局命令空间(gloabl),也就是说内部函数不能给定义在外部函数中的局部变量重新赋值(函数嵌套的情况下),python3 中,可以使用nonlocal 声明完成修改。(https://www.jb51.net/article/108183.htm)

x="qaq"

def one():

x=1

def two():

x=2

print("two: ",x)

two()

print("one: ",x)

one()

print("global: ",x)

>two: 2

>one: 1

>global: qaq

加入关键字nonlocal后

x="qaq"

def one():

x=1

def two():

nonlocal x 将第一层函数的值1变成了2

x=2

print("two: ",x)

two()

print("one: ",x)

one()

print("global: ",x)

>two: 2

>one: 2

>global: qaq

通过nonlocal把上一层函数的值改变了。

只将以上代码中的nonlocal替换成global观察:

x="qaq"

def one():

x=1

def two():

global x

x=2

print("two: ",x)

two()

print("one: ",x)

one()

print("global: ",x)

>2

>1

>2 #全局变量被替换

结果中全局变量被替换成2,而函数one()中的x值并未改变。

global 是对整个环境下的变量起作用,而不是对函数类的变量起作用。

(16)in:判断变量是否在序列中。

(17)is:判断变量是否为某个类的实例。

(18)lambda:定义匿名函数:

详情参考:https://www.cnblogs.com/hf8051/p/8085424.html

>>> g=lambda x,y:x+y

>>> g(3,4)

7

(19)pass:空的类、方法或函数的占位符。

def foo():

pass

foo()

关键字pass属于占位关键字,一般是在开发中先用它占据函数体确定整个模块的基本框架,之后再删去pass填充函数体。pass的合理使用可以方便我们组织编程。当程序运行到pass时不会执行任何操作,解释器会把pass当做一条咸鱼而不去理会。

(20)raise: 除了常见的try–except异常处理语句,raise可以主动抛出一个异常,定义异常信息内容:

raise NameError([str]) : raise 异常类型(异常参数)

通过raise 引发异常时,raise 后面的操作将不会被执行 常见用法如下:

主动抛出一个异常

while 1:

def number():

a = int(input('输入第一个数:'))

b = int(input('输入第二个数:'))

if a < b:

raise Exception("a < b")

print("a>b") # 如果atry:

number()

except Exception as e:

print(e)

#运行结果:

>>>输入第一个数:2

>>>输入第二个数:8

a < b 第一个print语句并未被执行

>>>输入第一个数:6

>>>输入第二个数:2

a>b

自己创建一个异常类

class InputError(Exception): # 创建一个新的exception类来抛出自己的异常。

# 异常应该继承自 Exception 类,包括直接继承,或者间接继承

def __init__(self, errorinfor):

self.error = errorinfor

def __str__(self):

return self.error

def score():

grade = int(input('你的成绩是:'))

if grade <= 0 or grade >= 150:

raise InputError('考试分数只能在0-150')

try:

score()

except InputError as e:

print(e)

>>>你的成绩是:156

>考试分数只能在0-150

(21)return:用于函数返回计算结果

(22)with:简化python的语句。

with语句可用于对try except finally 的优化,让代码更加美观,

fo=open ('file_name',"r")

try:

print(fo.read())

except:

pass

finally:

fo.close() #文件关闭非常有必要

**等价于下面**:

with open('file_name','r') as fp: #with自带关闭,异常也能自动关闭

print(fp.read())

进程线程之间互斥对象。

支持上下文其他对象

友情链接:

https://www.jianshu.com/p/5b01fb36fd4c

https://www.cnblogs.com/Xjng/p/3927794.html

(23)yield:yield主要是用来创造生成器。

在python中我们把含有yield语句的函数称之为生成器,生成器对象必然是迭代(类),生成器对象是一种用普通函数的方法定义的迭代器,yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器,当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象。可以用"next()"方法或者for循环进行迭代执行。

def r(n):

print("hellow world")

while n>0:

print("before")

yield n

n -=1

print("after")

foo=r(3)

print(foo)

#运行后

#返回值

>>> foo.__next__() #用next方法执行一次

hellow world

before

3

>>> foo.__next__() #再次用next方法执行一次

after

before

2

>>> foo.__next__() #继续向下执行

after

before

1

>>> foo.__next__() #再次执行,当不再满足循环条件,返回内定的异常

after

Traceback (most recent call last):

File "", line 1, in

foo.__next__()

StopIteration

>>>

同样的将上面主程序中的yield换成return比较如下:

def r(n):

print("hellow world")

while n>0:

print("before")

return n

n -=1

print("after")

foo=r(3)

print(foo)

#结果如下

hellow world

before

3

根据结果可以看出,程序遇到return后返回值,就不会再运行下面的内容了,就已经彻底结束了,而遇到yield时候,只是相当于暂停、挂起的状态,并未结束…

友情链接:https://blog.csdn.net/libbyandhelen/article/details/78957369#commentBox

(具体的关于生成器和迭代器,以及相关知识和两者区别我有时间会再写一篇专门介绍,还需多多学习,多多实践)

你可能感兴趣的:(python35个关键字)