- 浏览: 569355 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (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)
with 和 if-else条件表达式
- 博客分类:
- Python
对于要确保即使发生一个错误时也能运行一些清理代码而言,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 13201 # 父表插入记录出错,NotSupportedEr ... -
python note
2012-09-07 11:49 13311.func(**{'type':'Event'}) 等价于f ... -
note
2012-09-03 20:10 1620安装easy_install 安装pip easy_i ... -
Python 线程
2012-02-21 12:01 13281.创建线程 通过继承threading模块中的Thread ... -
Python面向对象笔记
2012-02-20 17:18 13371.特殊的类属性 对任何类,都有下面特殊属性: ... -
socket模块
2012-02-20 12:09 13401.socket(family, type) 创建套接字对象 ... -
Python datetime模块
2012-02-18 12:33 9227datetime模块的所有类的对象都是不可变的。 da ... -
Python time模块
2012-02-17 18:20 1031底层C语言库决定了time模块可以处理的日期范围。 c ... -
发送邮件
2012-01-14 19:59 11651.使用smtplib #encoding=utf-8 ... -
Python文件操作
2012-01-14 16:26 1045一.os模块常用操作函数 remove()/unlin ... -
Python单例模式
2012-01-13 22:12 3510方法一 import threading cla ... -
Python异常
2012-01-13 19:11 24371.常用异常名 AttributeError 调用不 ... -
列表和元组
2012-01-12 13:57 15201.列表常用操作 list.append(x) 追加 ... -
字符串
2012-01-12 13:19 14101.字符串常用操作: ... -
Python基础笔记
2012-01-14 16:31 11241.环境变量设置: 编辑系统变量Path,添加两 ... -
版本控制Mercurial(hg)
2011-11-12 16:07 3086简介 ... -
Python Excel Tutorial (一):xlrd的安装和读取Excel文件
2011-09-16 22:49 51908Python Excel Tutorial 指南 安装 有 ... -
Python排序
2011-09-10 13:32 161001.字符串列表排序 列表的排序是python内置功能,自身含 ... -
ChartDirector在Pythonr下的安装
2011-08-27 17:38 17341、在C:/python27/Lib/site_pack ... -
我的第一个Python Web应用
2011-07-05 16:02 3906本文实现的是通信录的Web应用,在Windows xp环 ...
相关推荐
WhatIf:umbrella_with_rain_drops:WhatIf是kotlin扩展,用于表达单个if-else语句,可为null和布尔值。 下载Gradle将依赖项代码添加到模块的build.gradle文件中。 dependenci WhatIf:umbrella_with_rain_drops:WhatIf...
WhatIf::umbrella_with_rain_drops:Kotlin的流利表达式,用于处理单个if-else语句,可为空,集合和布尔值
JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp...
表达式、变量和打印输出 Python 运算符 - Python 赋值运算符、关系和逻辑运算符、短路运算符 Python 条件和 If 语句 方法 - 参数、参数和返回值 Python平台概述 面向对象编程 - 类、对象、状态和行为 OOPS 基础 - ...
这个函数最基本的用法就是向它传递一个表达式(通常由 CSS 选择器组成),然后根据这个表达式来查找所有匹配的元素。 默认情况下, 如果没有指定context参数,$()将在当前的 HTML 文档中查找 DOM 元素;如果指定了 ...
5、--任何含有空值的数学表达式,最后的计算结果都是空值。 6、select ename||sal from emp; --(将sal的查询结果转化为字符串,与ename连接到一起,相当于Java中的字符串连接) 7、select ename||'afasjkj' from...
多重条件判断 多重条件判断( …ELSE IF … ELSE) ${status} Set Variable 1 Run Keyword If ${status} … Else If ${status} > 4 log "error" … Else log "end" 3.利⽤ 利⽤IF关键字给变量赋值 关键字给变量赋值 即...
运算符顶级语句运算符多行括号嵌套函数应用涉及嵌套的let,if-else和try-with表达式以及结果括号的歧义括号关键字in , done , begin和end 语言语法在其他方面与OCaml相同,但有一些限制。 版本1被实现为面向行的预...
以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...
If...Then...Else 语句 根据表达式的值,有条件地执行一组语句。 IgnoreCase 属性 设置或返回 Boolean 值,指示模式搜索是否区分大小写。 Imp 运算符 执行两个表达式的逻辑隐含。 初始化事件 发生在创建相关类的...
Q: 我有两个对象: Memo1 和 Memo2. 我能否在 Memo1 的脚本中调用 Memo2 的属性和方法? A: 当然, 例如,你可以这样做: 对象名.属性名. Q: 在脚本中,我可以使用对象的哪些属性? A: 几乎所有你能在对象浏览器中...
<#elseif condition>... <#elseif condition>... <#else> ... </#if> 例子如下: <#if (age>60)>老年人 <#elseif (age>40)>中年人 <#elseif (age>20)>青年人 <#else> 少年人 </#if> 输出结果是:青年人 ...
if, else, elseif 语法 Java代码 <#if condition> ... <#elseif condition2> ... <#elseif condition3> ... ... <#else> ... </#if> <#if condition> ... <#elseif condition2> ... <#...
if...else 语句 根据表达式的值,有条件地执行一组语句。 ignoreCase 属性 返回一个 Boolean 值,标记正则表达式使用的 ignoreCase 标志状态 (i)。 递增运算符(++) 给变量加一。 index 属性 返回在字符串中找到...
if...else 语句 根据表达式的值,有条件地执行一组语句。 ignoreCase 属性 返回一个 Boolean 值,标记正则表达式使用的 ignoreCase 标志状态 (i)。 递增运算符(++) 给变量加一。 index 属性 返回在字符串中找到...
if...else 语句 根据表达式的值,有条件地执行一组语句。 ignoreCase 属性 返回一个 Boolean 值,标记正则表达式使用的 ignoreCase 标志状态 (i)。 递增运算符(++) 给变量加一。 index 属性 返回在字符串中找到...
If...Then...Else 语句 根据表达式的值,有条件地执行一组语句。 IgnoreCase 属性 设置或返回 Boolean 值,指示模式搜索是否区分大小写。 Imp 运算符 执行两个表达式的逻辑隐含。 初始化事件 发生在创建相关类的...
If...Then...Else 语句 根据表达式的值,有条件地执行一组语句。 IgnoreCase 属性 设置或返回 Boolean 值,指示模式搜索是否区分大小写。 Imp 运算符 执行两个表达式的逻辑隐含。 初始化事件 发生在创建相关类的...
If...Then...Else 语句 根据表达式的值,有条件地执行一组语句。 IgnoreCase 属性 设置或返回 Boolean 值,指示模式搜索是否区分大小写。 Imp 运算符 执行两个表达式的逻辑隐含。 初始化事件 发生在创建相关类的...
If...Then...Else 语句 根据表达式的值,有条件地执行一组语句。 IgnoreCase 属性 设置或返回 Boolean 值,指示模式搜索是否区分大小写。 Imp 运算符 执行两个表达式的逻辑隐含。 Initialize 事件 发生在创建...