易截截图软件、单文件、免安装、纯绿色、仅160KB

Python三目运算,and or陷阱

在C语言中,三目运算经常用到(cond?a:b),非常的简洁,而在Python中不支持这种语法。
但是,可以用Python中and or来实现(这里是有陷阱的,下面会讲到)
我们来看下面几个表达式
>>> False
or 1
1
>>> False
or 0
0
>>> True or
0
True
>>> True
and 1
1
>>>True and
0
0
>>> False
and 1
False
也就是说,and or这个表达式会返回一个最终的表达式结果,而不是简单的True或者False。那么看如下几个表达式:
>>> True
and 1 or 2   #TRUE?1:2
1
>>> False
and 1 or 2 #TRUE?1:2
2
这是不是很像三目运算的结果呢?
这里你也许会想到文章开始的三目表达式可以这样表示
>>> cond
and a or b
是的,在大多数情况下这个表达式都是正确的,但是上面提到的陷阱也在这里出现了
>>> cond,
a, b = True, 0, 1 #这样赋值后
>>> cond
and a or b         #这个表达式的结果会是什么呢?
1                                     
#也就是b,而不是你预想的a
这是因为,在 and or运算中 空字符串 ‘’,数字0,空列表[],空字典{},空(),None,在逻辑运算中都被当作假来处理,如下面这个例子
>>> 'sss'
and '' or 'bbb'
'bbb'
但是,不要担心,还是有办法的。
在的文章《和C语言三目运算符完全等价的表达式

中给出了如下表达方式
>>> c =
cond and a or (not cond or a) or b #貌似有点太复杂了
在Dive into Python 中给出这样一个方法:
>>> (1 and
[a] or [b])[0]   #也就是 (cond and [a] or [b])[0]
因为,即使 a或者b为一个逻辑假的值,将他放入集合中后,就为假了,也就是[False] [None]都不为假。
此外,我认为还可以这样实现
>>> (b,
a)[cond and 1 or 0] #这种方法需要主意的地方就是,Tuble中a和b的位置是颠倒的
另,在“深圳夜归人”的文章
里给出了,用dict的一种方式
>>> max_ab =
{True:a, False:b}[a > b]
但是这


相关文档:

Python 八荣八耻

http://www.okpython.com/bbs/thread-3367-1-2.html
以动手实践为荣 , 以只看不练为耻;
以打印日志为荣 , 以单步跟踪为耻;
以空格缩进为荣 , 以制表缩进为耻;
以单元测试为荣 , 以人工测试为耻;
以模块复用为荣 , 以复制粘贴为耻;
以多态应用为荣 , 以分支判断为耻;
以Pythonic为荣 , 以冗余拖沓为耻;
以总结分享为 ......

Python字典按value排序

myDict = { 'item1' : [ 7, 1, 9], 'item2' : [8, 2, 3], 'item3' : [ 9, 3, 11 ] }
def sortDic(Dict,valuePostion):
return sorted(Dict.items(),key=lambda e:e[1][valuePostion])
//按value的第3个值排序
sortDic(myDict,2)
[('item2', [8, 2, 3]), ('item1', [7, 1, 9]), ('item3', [9, 3, 11])]
//按value的第 ......

UBUNTU10.04安装stackless python运行高性能服务器

以下"#"开头是Ubuntu终端命令
1。首先安装Ubuntu10.04
参考 http://wiki.ubuntu.org.cn/
2。修改root用户密码
3。使用root登陆系统
 
4。Ubuntu默认已经安装python2.6.5
 
5。下载stackless
查看网址 http://zope.stackless.com/download/sdocument_view
# cd /usr/src
# wget http://www.sta ......

Python中RE模块的应用

      Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式。Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 regex 模块,当然偶尔你还是可能在老代码里发现其踪影。
  & ......

python链接mysql常见问题

Python与Mysql
一、安装MySQLdb模块
使用python连接Mysql的前提,就是需要一个让python连接到Mysql的接口,这就是MySQLdb模块。
验证是否已经安装了MySQLdb:
==========================================================
d:\usr\local\Python25>python
Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号