- 浏览: 577990 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (206)
- Flask (1)
- JavaScript (3)
- Core Java (41)
- XML (1)
- Oracle (11)
- 软件安装及环境配置 (0)
- 其它 (9)
- 面试/笔试 (5)
- 项目 (0)
- JDBC (11)
- Servlet (4)
- MySql (4)
- JNDI (0)
- Hibernate (11)
- Java模式和构架设计 (0)
- Web设计 (22)
- JSP (8)
- Struts (13)
- Tomcat (2)
- Marven (2)
- SVN (2)
- Swing/AWT (1)
- jQuery (2)
- ExtJS (8)
- Python (22)
- Flex (1)
- Django (7)
- 算法 (5)
- English (1)
- Twisted (1)
- Linux (3)
- Rails (1)
- SVG (3)
- PostgreSQL (1)
对于要确保即使发生一个错误时也能运行一些清理代码而言,try...finally语句是很有用的。对此有许多使用场景,例如:
- 关闭一个文件
- 释放一个锁
- 创建一个临时的代码补丁
- 在特殊环境中运行受保护的代码
with语句覆盖了这些使用场景,为在一个代码块前后调用一些代码提供了一种简单的方法。例如,使用一个文件通常可以如下实现。
hosts = file('/etc/hosts') try: for line in hosts: if line.startswith('#'): continue print line finally: hosts.close()
使用with语句,以上代码可以重写如下:
from __future__ import with_statement with file('/etc/hosts') as hosts: for line in hosts: if line.startswith('#'): contine print host
注意,在2.5版本中with语句仍然位于__future__模块里,而在2.6版本中则可以直接使用。
与这条语句兼容的其他项目是来自thread和threading模块的类:
- thread.LockType
- threading.Lock
- threading.RLock
- threading.Condition
- threading.Semaphore
- threading.BoundedSemaphore
这些类都实现两个方法__enter__和__exit__,这都来自于with协议。换句话说,任何类都可以实现为如下的所示:
class Context(object): def __enter__(self): print 'entering the zone' def __exit__(self, exception_type, exception_value, exception_traceback): print 'leaving the zone' if exception_type is None: print 'with no error' else: print 'with an error (%s)' % exception_value with Context(): print 'i am the zone' with Context(): print 'i am the buggy zone' raise TypeError('i am the bug')
Python2.5新增if-else条件表达式
条件表达式,C风格的如下:
condition? exp1 : exp2
也称为三元表达式。
Python2.5新增了这一功能,但形式有了变化:
exp1 if condition else exp2
实例:
>>> a = 1 if 2 == 3 else 4 >>> a 4 >>> isLeapYear = lambda year: not (year % 4 if year % 100 else year % 400) # 判断闰年 >>> isLeapYear(1234) False >>> isLeapYear(1236) True >>> isLeapYear(1000) False >>> isLeapYear(2000) True >>> [i + 1 if i % 2 for i in xrange(10)] # 不能省略else File "<stdin>", line 1 [i + 1 if i % 2 for i in xrange(10)] ^ SyntaxError: invalid syntax >>> [i + 1 if i % 2 else i for i in xrange(10)] [0, 2, 2, 4, 4, 6, 6, 8, 8, 10] >>> [i % 2 and i + 1 or i for i in xrange(10)] # 之前的语法 [0, 2, 2, 4, 4, 6, 6, 8, 8, 10]
发表评论
-
sqlalchemy note
2012-09-10 22:47 13771 # 父表插入记录出错,NotSupportedEr ... -
python note
2012-09-07 11:49 14281.func(**{'type':'Event'}) 等价于f ... -
note
2012-09-03 20:10 1654安装easy_install 安装pip easy_i ... -
Python 线程
2012-02-21 12:01 13871.创建线程 通过继承threading模块中的Thread ... -
Python面向对象笔记
2012-02-20 17:18 13781.特殊的类属性 对任何类,都有下面特殊属性: ... -
socket模块
2012-02-20 12:09 14081.socket(family, type) 创建套接字对象 ... -
Python datetime模块
2012-02-18 12:33 9281datetime模块的所有类的对象都是不可变的。 da ... -
Python time模块
2012-02-17 18:20 1069底层C语言库决定了time模块可以处理的日期范围。 c ... -
发送邮件
2012-01-14 19:59 12081.使用smtplib #encoding=utf-8 ... -
Python文件操作
2012-01-14 16:26 1080一.os模块常用操作函数 remove()/unlin ... -
Python单例模式
2012-01-13 22:12 3553方法一 import threading cla ... -
Python异常
2012-01-13 19:11 24731.常用异常名 AttributeError 调用不 ... -
列表和元组
2012-01-12 13:57 15591.列表常用操作 list.append(x) 追加 ... -
字符串
2012-01-12 13:19 14561.字符串常用操作: ... -
Python基础笔记
2012-01-14 16:31 11661.环境变量设置: 编辑系统变量Path,添加两 ... -
版本控制Mercurial(hg)
2011-11-12 16:07 3137简介 ... -
Python Excel Tutorial (一):xlrd的安装和读取Excel文件
2011-09-16 22:49 52072Python Excel Tutorial 指南 安装 有 ... -
Python排序
2011-09-10 13:32 161731.字符串列表排序 列表的排序是python内置功能,自身含 ... -
ChartDirector在Pythonr下的安装
2011-08-27 17:38 17791、在C:/python27/Lib/site_pack ... -
我的第一个Python Web应用
2011-07-05 16:02 3948本文实现的是通信录的Web应用,在Windows xp环 ...
相关推荐
在处理IF-ELSE条件语句时,LR方法可以有效地识别出条件部分和两个可能的代码块,确保语义正确性。 LR方法分为几个主要步骤:LR(0)、SLR、LALR和LR(1),其中LALR(Look-Ahead Left-to-Right with One Look-Ahead)是...
在Python的世界里,正则表达式(Regular Expression)是一种强大的文本处理工具,它能用于查找、替换和提取符合特定模式的字符串。对于数据爬虫来说,正则表达式是不可或缺的一部分,因为它能帮助我们从复杂的网页源...
在iOS开发中,正则表达式(Regular Expression)是一种强大...通过学习和理解这段代码,开发者可以学习到如何在iOS应用中使用正则表达式进行数据验证,并进一步扩展到其他类型的数据格式验证,如邮箱地址、身份证号等。
WhatIf:umbrella_with_rain_drops:WhatIf是kotlin扩展,用于表达单个if-else语句,可为null和布尔值。 下载Gradle将依赖项代码添加到模块的build.gradle文件中。 dependenci WhatIf:umbrella_with_rain_drops:WhatIf...
在Swift编程语言中,正则表达式(Regex)是一种强大的文本处理工具,用于匹配、查找、替换和解析字符串。在iOS和macOS开发中,Swift提供了`NSRegularExpression`类来处理正则表达式,它是Foundation框架的一部分。`...
在RPA编程中,逻辑控制结构是不可或缺的一部分,其中,IF、Elseif和Else语句是进行条件判断和流程分支的核心。本视频教程——"32.IF, Elseif - A2019 Automation anywhere IF, Elseif & Else actions overview with ...
在Kotlin编程语言中,`WhatIf`是一个实用的扩展库,它提供了更优雅、流利的方式来处理单个if-...如果你在项目中经常遇到条件判断,特别是涉及可为空值、集合和布尔逻辑的情况,考虑引入`WhatIf`库会是一个不错的选择。
5. **控制流语句**:包括条件语句(if-else-end,switch-case-end)和循环(for,while),用于实现程序的分支和重复执行。 6. **数据可视化**:MATLAB强大的图形功能,如plot函数用于绘制线图、散点图、柱状图等,...
正则表达式(Regular Expression)是由字符和特殊符号组成的模式,用于描述字符串的某种模式。例如,`\d{3}-\d{4}`可以匹配美国电话号码格式。在Groovy中,你可以直接使用Java的正则表达式API,因为Groovy是基于...
当你使用嵌套 if 语句时,需记住的要点就是:一个 else 语句总是对应着和它在同一个块中的最近的 if 语句,而且该 if 语句没有与其他 else 语句相关联。 下面是一个例子: if(i == 10) { if(j ) a = b; if(k > ...
这里使用了三元表达式 `(y 是一个负数 if y < 0 else y 是一个非负数)` 来判断变量 `y` 的值是否小于零,如果小于零则输出 `y 是一个负数`,否则输出 `y 是一个非负数`。 ### 4. `with`-`as` 语句 `with`-`as` ...
这对于初学者理解控制流程和条件判断至关重要。 首先,`if`语句用于基于某个条件执行特定的代码块。基本语法如下: ```cpp if (condition) { // 当条件为真时执行的代码 } ``` 在这里,`condition`是一个布尔...
1. **简化if语句**:可以用三目运算符替代简单的if-else语句,使代码更简洁。 ```java int a = 10; int b = 20; int max = (a > b) ? a : b; // 如果a大于b,max等于a;否则max等于b ``` 2. **动态赋值**:...
JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp...
标题中的“ID-card-with-date-of-birth.rar_birth”暗示了我们正在处理与身份证相关的数据,特别是涉及出生日期和性别的信息。身份证在中国是公民的重要身份证明,其中包含了个人的18位或15位身份证号码。这个压缩包...
- **条件判断**: 使用`IF...ELSE`语句可以根据条件执行不同的代码块。此外,`CASE`语句提供了更复杂的条件分支选择。 - **循环**: `WHILE`循环允许重复执行一段代码直到满足特定条件为止。 - **跳转**: `GOTO`语句...
通过`if`、`else`、`elif`和嵌套`if`,我们可以构建灵活的逻辑控制,以适应各种情况。在实际编程中,`if`语句通常与变量、函数、比较和逻辑运算符等结合使用,实现复杂的决策逻辑。在学习和使用`if`语句时,理解其...
理解控制流程的逻辑和条件判断。 10. 循环结构(The while Loop) 学习while循环的使用方法和循环控制语句(如break和continue)。理解循环的执行条件和如何处理循环内的变量。 11. 数组的使用(Accessing Array ...