python35个关键字_Python关键字35个
摘要
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个相关推荐
- python列表排序关键字_Python关键字排序
一.当排序关键字多于1个时,我们使用lambda表达式来描述关键字key arr=[(1,4,3),(1,3,3),(2,1,4),(3,5,1)] arr.sort(key=lambda s:(s[ ...
- python语言关键字是_Python 关键字
1 Python 关键字概述 Python 关键字(或称 保留字)指的是 Python 语言中一些已经被赋予特定意义的单词. 也属于是标识符,但是不能被用作普通标识符. 以下标识符被作为 Python ...
- python 可变参数 关键字参数_Python关键字及可变参数*args,**kw原理解析
可变参数 顾名思义,函数的可变参数是传入的参数可以变化的,1个,2个到任意个.当然可以将这些 参数封装成一个 list 或者 tuple 传入,但不够 pythonic.使用可变参数可以很好解决该问题 ...
- 在python子程序中、使用关键字_Python 的控制和函数
控制if else for while 函数 函数的定义 函数一词来源于数学,但编程中的函数概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BAS ...
- python关键字参数必须位于位置参数之前_python关键字参数和位置参数
关键字参数必须跟随在位置参数后面! 因为python函数在解析参数时, 是按照顺序来的, 位置参数是必须先满足, 才能考虑其他可变参数.,否则报错如下: In [74]: print(s1.forma ...
- python可变长参数(非关键字及关键字参数)
可变长参数存在的意义是:每次调用一个函数处理不同量的参数输入.即,参数在调用之前输入的参数数量是未知的,或者多次调用该函数,每次的参数输入的量是不一致的: 可变长参数分为非关键字和关键字类型,分别对应 ...
- ES6 | let 关键字 + const关键字 + 箭头函数 + rest参数 + 扩展运算符 ... + Symbol + 迭代器 + 生成器 + 变量的解构赋值 + 模板字符串
目录 ECMASript 相关介绍 ECMASript 6 新特性 let 关键字 const关键字 变量的解构赋值 模板字符串 简化对象写法 箭头函数 => 参数默认值 rest参数 扩展运算 ...
- java outer关键字_Java关键字
Java关键字 Java关键字是编程语言里事先定义的,有特别意义的单词,Java语言中所有的关键字都是小写的英语单词.Java的关键字对Java的编译器有特殊的意义,它们用来表示一种数据类型,或者表示 ...
- java程序处理ibitis 关键字_java关键字总结
java关键字总结 关键字指的就是电脑语言中事先定义好,有其独特意义的标识符,专门提供给电脑语言识别的词语,所以它不能作为变量名.方法名.类名.包名或参数名等等. 在java中,总共有51个关键字,2 ...
最新文章
- matlab最小分类错误全局二值化算法
- 2.5 指数加权平均的偏差修正-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
- substrate 区块链框架 (1)概述
- healthd: battery l=1 v=0 t=27.0 h=2 st=1 chg=a 注释方法
- JAVA 编程-张晨光-专题视频课程
- Csharp 打印Word文件默認打印機或選擇打印機設置代碼
- Unity(四):使用场景Ⅰ:建立类型映射
- 安装程序未能打开日志文件_安装和启动日志错误 | Adobe Creative Suite 6、Adobe Creative Suite 5.5、Adobe Creative Suite 5...
- 层次凝聚聚类算法(HAC)
- VIM 快捷键汇总(持续更新)
- python3的字符串操作
- 节点英雄榜之脑海链:构建区块链化的知识变现经济生态
- 关于图片的像素,dpi与实际尺寸的关系
- hdu 5755 Gambler Bo 高斯消元
- HTML指南针源码zip,ios 制作的指南针
- [小o地图-数据] - 下载行政区范围内的POI数据
- 【Rust 日报】2023-1-19 Lars Bergstrom当选为Rust基金会董事会主席
- 阿里六脉神剑的一些感悟【分享】
- leetcode 刷题ing
- 计算机三级信息安全技术知识点总结(7)
热门文章
- android开发,加法,上课写的demo
- 利用python提取abaqus节点坐标的脚本_用于在Abaqus中提取结点力的Python程序
- postgresql 创建用户_PostgreSQL创建用户和修改用户密码
- linux查看文件的方法,查看linux文件的方法
- 8_python基础—高级变量类型(字符串、列表、元组、字典、集合)
- 惠普g260鼠标宏软件_电竞外设再添新成员,微星DS102电竞鼠标正式发布
- linux gret 文件内容,DataX插件开发指南.docx
- python编译成class_python class
- git 修改默认分支为main_Git:基本操作
- c语言文件分类二进制,C语言实现文件版(二进制文件版)通讯录