摘要

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

python3.8中:

python2.7中:

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

(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

>输入错误

>程序结束

另:常见异常

(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个关键字_Python关键字35个相关推荐

  1. python列表排序关键字_Python关键字排序

    一.当排序关键字多于1个时,我们使用lambda表达式来描述关键字key arr=[(1,4,3),(1,3,3),(2,1,4),(3,5,1)] arr.sort(key=lambda s:(s[ ...

  2. python语言关键字是_Python 关键字

    1 Python 关键字概述 Python 关键字(或称 保留字)指的是 Python 语言中一些已经被赋予特定意义的单词. 也属于是标识符,但是不能被用作普通标识符. 以下标识符被作为 Python ...

  3. python 可变参数 关键字参数_Python关键字及可变参数*args,**kw原理解析

    可变参数 顾名思义,函数的可变参数是传入的参数可以变化的,1个,2个到任意个.当然可以将这些 参数封装成一个 list 或者 tuple 传入,但不够 pythonic.使用可变参数可以很好解决该问题 ...

  4. 在python子程序中、使用关键字_Python 的控制和函数

    控制if else for while 函数 函数的定义 函数一词来源于数学,但编程中的函数概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BAS ...

  5. python关键字参数必须位于位置参数之前_python关键字参数和位置参数

    关键字参数必须跟随在位置参数后面! 因为python函数在解析参数时, 是按照顺序来的, 位置参数是必须先满足, 才能考虑其他可变参数.,否则报错如下: In [74]: print(s1.forma ...

  6. python可变长参数(非关键字及关键字参数)

    可变长参数存在的意义是:每次调用一个函数处理不同量的参数输入.即,参数在调用之前输入的参数数量是未知的,或者多次调用该函数,每次的参数输入的量是不一致的: 可变长参数分为非关键字和关键字类型,分别对应 ...

  7. ES6 | let 关键字 + const关键字 + 箭头函数 + rest参数 + 扩展运算符 ... + Symbol + 迭代器 + 生成器 + 变量的解构赋值 + 模板字符串

    目录 ECMASript 相关介绍 ECMASript 6 新特性 let 关键字 const关键字 变量的解构赋值 模板字符串 简化对象写法 箭头函数 => 参数默认值 rest参数 扩展运算 ...

  8. java outer关键字_Java关键字

    Java关键字 Java关键字是编程语言里事先定义的,有特别意义的单词,Java语言中所有的关键字都是小写的英语单词.Java的关键字对Java的编译器有特殊的意义,它们用来表示一种数据类型,或者表示 ...

  9. java程序处理ibitis 关键字_java关键字总结

    java关键字总结 关键字指的就是电脑语言中事先定义好,有其独特意义的标识符,专门提供给电脑语言识别的词语,所以它不能作为变量名.方法名.类名.包名或参数名等等. 在java中,总共有51个关键字,2 ...

最新文章

  1. matlab最小分类错误全局二值化算法
  2. 2.5 指数加权平均的偏差修正-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  3. substrate 区块链框架 (1)概述
  4. healthd: battery l=1 v=0 t=27.0 h=2 st=1 chg=a 注释方法
  5. JAVA 编程-张晨光-专题视频课程
  6. Csharp 打印Word文件默認打印機或選擇打印機設置代碼
  7. Unity(四):使用场景Ⅰ:建立类型映射
  8. 安装程序未能打开日志文件_安装和启动日志错误 | Adobe Creative Suite 6、Adobe Creative Suite 5.5、Adobe Creative Suite 5...
  9. 层次凝聚聚类算法(HAC)
  10. VIM 快捷键汇总(持续更新)
  11. python3的字符串操作
  12. 节点英雄榜之脑海链:构建区块链化的知识变现经济生态
  13. 关于图片的像素,dpi与实际尺寸的关系
  14. hdu 5755 Gambler Bo 高斯消元
  15. HTML指南针源码zip,ios 制作的指南针
  16. [小o地图-数据] - 下载行政区范围内的POI数据
  17. 【Rust 日报】2023-1-19 Lars Bergstrom当选为Rust基金会董事会主席
  18. 阿里六脉神剑的一些感悟【分享】
  19. leetcode 刷题ing
  20. 计算机三级信息安全技术知识点总结(7)

热门文章

  1. android开发,加法,上课写的demo
  2. 利用python提取abaqus节点坐标的脚本_用于在Abaqus中提取结点力的Python程序
  3. postgresql 创建用户_PostgreSQL创建用户和修改用户密码
  4. linux查看文件的方法,查看linux文件的方法
  5. 8_python基础—高级变量类型(字符串、列表、元组、字典、集合)
  6. 惠普g260鼠标宏软件_电竞外设再添新成员,微星DS102电竞鼠标正式发布
  7. linux gret 文件内容,DataX插件开发指南.docx
  8. python编译成class_python class
  9. git 修改默认分支为main_Git:基本操作
  10. c语言文件分类二进制,C语言实现文件版(二进制文件版)通讯录