其他语言中else只可以和if进行组合,也就是我们常见的if...else,但是python为else赋予了新的声明。它可以和while 、for 、try一起串联使用。

  下面我们介绍和while串联使用时的效果。

count=0
while count>12:
if (11>0):
print("成立")
break
count+=1
else:
print('不成立') #当while条件不成立,直接跳到该处输出

  for 循环和while用法一样的

def forelse():
c = [1,2]
for i in c:
print(i)
else:
print("输出") #当for循环结束会输出该语句

  try 的用法

def tryelse():
try:
sum = 1+1
except TypeError as reason:
print("报错")
else:
print("到我这里了") #当try块中的语句正常执行完毕会执行该方法。

  with ...:用法

# 第一种写法
def withas():
try:
f = open("文字.txt")
print(f.read())
f.close()
except OSError as reason:
print("读取错误")
else:
print("完成")
# 第二种写法 with,一定不要忘记 : 哦
def withas2():
try:
with open("文字.txt") as f:
print(f.read())
f.close()
except OSError as reason:
print("读取错误")
else:
print("完成")

  为什么会用到with,是因为有的时候我们可能在使用open(file)打开一个文件的时候,可能这个文件并不存在,那么这个时候就会报错,而我们可能会将这种方法卸载一个try except finally这样的语句里,并且在finally里边可能添加了f.close()这样的语句,但是我们这个时候并没有打开一个f的文件,因为这个文件并不存在,所以没有必要关闭这个文件。这时候我们就用到了with。

  错误代码展示:

def withas1():
try:
f = open("文字1.txt") #该文件不存在哦
print(f.read())
except OSError as reason:
print("读取错误")
finally:
f.close() #--------------错误输出
读取错误
Traceback (most recent call last):
File "E:/python/day-2/whileelse.py", line 46, in <module>
withas1()
File "E:/python/day-2/whileelse.py", line 44, in withas1
f.close()
UnboundLocalError: local variable 'f' referenced before assignment
>>>

  从错误输出我们就可以看到,报的错误是局部变量错误,说的就是f并不存在,也就是没有打开这个文件。

python,中使用while...else 和 for...else 还有try...else,另外就是运用with关键字的更多相关文章

  1. 【转载】Python中如何高效实现两个字典合并,三种方法比较。

    本文转载自:http://www.pythoner.com/13.html Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个 ...

  2. python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍

    目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...

  3. [转]Python中的str与unicode处理方法

    早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...

  4. python中的Ellipsis

    ...在python中居然是个常量 print(...) # Ellipsis 看别人怎么装逼 https://www.keakon.net/2014/12/05/Python%E8%A3%85%E9 ...

  5. python中的默认参数

    https://eastlakeside.gitbooks.io/interpy-zh/content/Mutation/ 看下面的代码 def add_to(num, target=[]): tar ...

  6. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  7. python中的TypeError错误解决办法

    新手在学习python时候,会遇到很多的坑,下面来具体说说其中一个. 在使用python编写面向对象的程序时,新手可能遇到TypeError: this constructor takes no ar ...

  8. python中的迭代、生成器等等

    本人对编程语言实在是一窍不通啊...今天看了廖雪峰老师的关于迭代,迭代器,生成器,递归等等,word天,这都什么跟什么啊... 1.关于迭代 如果给定一个list或tuple,我们可以通过for循环来 ...

  9. python2.7高级编程 笔记二(Python中的描述符)

    Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...

  10. python cookbook 学习系列(一) python中的装饰器

    简介 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓 ...

随机推荐

  1. Django之Models操作

    一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 pr ...

  2. proxyServer Squid 3.5.5 / 20181111

    s 参考资料1 四次握手用来关闭已建立的TCP连接 1. (B) –> ACK/FIN –> (A) 2. (B) <– ACK <– (A) 3. (B) <– ACK ...

  3. 【SSL】WebClient 请求 https 页面出错:未能创建 SSL/TLS 安全通道

    #问题: 当向一个https的url上发送请求,报错:未能创建 SSL/TLS 安全通道: using (WebClient client = new WebClient()) { string ad ...

  4. python 计算机发展史,线程Process使用 for循环创建 2种传参方式 jion方法 __main__的解释

    ########################总结################## #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理.调度进程,并且将多个进程对硬 ...

  5. 【c++】编译器为我们实现了几个类成员函数?

    #include <cassert> #include <complex> #include <iostream> class Empty{}; Empty e; ...

  6. Golang入门教程(十四)结构体和类详解

    golang中并没有明确的面向对象的说法,实在要扯上的话,可以将struct比作其它语言中的class. 类声明 type Book struct { Title string Author stri ...

  7. Spark源码剖析 - SparkContext的初始化(二)_创建执行环境SparkEnv

    2. 创建执行环境SparkEnv SparkEnv是Spark的执行环境对象,其中包括众多与Executor执行相关的对象.由于在local模式下Driver会创建Executor,local-cl ...

  8. 使用wget命令下载JDK失败(文件特别小)

    问题RT: 我们在网页上下载的时候要点一下 “Accept License Agreement ” ,使用wget下载的时候也需要提交这个 accept,方法如下: wget --no-check-c ...

  9. Django聚合与分组查询中value与annotate的顺序问题

    在学习Django聚合与分组查询中,发现value与annotate的顺序不同时,查询结果大相径庭,经过一下午的研究,终于弄明白了,现在分享给大家,先上结论: 结论 value在annotate前面时 ...

  10. 指定so动态链接库连接器

    在学习x86_64汇编时, 发现一旦使用glibc库函数, 如printf时, 一般是需要使用为ld传递命令行参数-lc来动态连接libc.so的, 但是, 生成的可执行文件却无法运行: 气煞我也! ...