11 2013 档案

摘要:两个不起眼但是比较重要的设定Python str类型的字面量解释器当反斜杠及其紧接字符无法构成一个具有特殊含义的序列('recognized escape sequences')时,Python选择保留全部字符.直接看例子:>>> '\c''\\c'>>> '\d''\\d'官方管'\c'这种序列叫'unrecognized escape sequences'.官方文档相应部分:Unlike Standard C, all unrecognized 阅读全文
posted @ 2013-11-28 01:14 LisPythoniC 阅读(6732) 评论(0) 推荐(0) 编辑
摘要:在模拟登录上,requests确实比python标准库中的相关模块更加简洁.假设你需要去爬一组页面(targetUrls),而这些页面要登录才能进行访问.那么requests能够提供一种相当简单的语法来实现.不过在此之前,你得先通过浏览器的开发人员工具确定:1.递交用户名和密码的页面(loginUrl)2.键值对(递交数据是以字典的形式)模拟举例:#确定登录页面地址和键值对loginUrl = "http://..."loginData={ 'formhash' : "f474a8c6", 'cookietime' : 2 阅读全文
posted @ 2013-11-25 00:52 LisPythoniC 阅读(5946) 评论(0) 推荐(0) 编辑
摘要:当你想删除右键菜单中某些选项时,一种比较合适的思路是:1.如果软件本身提供了控制选项,那么直接在该软件设置即可.没必要在注册表操作.比如360安全卫士和360杀毒都提供了这种机制.值得一提的是,360安全卫士实际上是由许多子软件构成,比如360软件管家,360隔离沙箱就是2个子软件.它们各自包含独立... 阅读全文
posted @ 2013-11-23 14:40 LisPythoniC 阅读(553) 评论(0) 推荐(0) 编辑
摘要:目前尚不清楚实质,但已经能够从形式上理解它的某些好处,有个很简单的连乘函数可以说明:为了展示究竟发生了什么,我包装了下乘法函数,将其变为mul.我们将比较product和xproduct的区别.;包装乘法函数(define (mul x y) (display x) (display " * ") (display y) (newline) (* x y));常规版(define (product ls) (let f ((ls ls)) (cond ((null? ls) 1) ((= (car ls) 0) 0) (else (mul (... 阅读全文
posted @ 2013-11-21 18:05 LisPythoniC 阅读(1009) 评论(0) 推荐(0) 编辑
摘要:摘自:PyWin32.chmIntroductionThis documents how to quickly start using COM from Python. It is not a thorough discussion of the COM system, or of the concepts introduced by COM.Other good information on COM can be found in various conference tutorials - please see the collection of Mark's conference 阅读全文
posted @ 2013-11-20 14:14 LisPythoniC 阅读(473) 评论(0) 推荐(0) 编辑
摘要:一言蔽之,搭配是关键.以32位Window为例,先后安装:1.PyQtPyQt4-4.10.3-gpl-Py3.3-Qt4.8.5-x32.exehttp://www.riverbankcomputing.com/software/pyqt/download这个简单,下载后直接双击安装.如果你选择PyQt4-4.10.3-gpl-Py3.3-Qt5.1.0-x32.exe,那么你将失败.附开发人员的解释:Please note that eric5 use with PyQt4/Qt5 is still experimental and does notsupport PyQt5/Qt5 at 阅读全文
posted @ 2013-11-20 12:48 LisPythoniC 阅读(574) 评论(0) 推荐(0) 编辑
摘要:对于一些貌似很简单常见的函数,最好还是去读一下Python文档,否则当你被某个BUG折磨得死去活来时,还不知根源所在.尤其是Python这种不断更新的语言.(python 2.7 的round和3.3.2不一样)3.3.2官方文档对round的定义round(number[,ndigits])Return the floating point valuenumberrounded tondigitsdigits after the decimal point. Ifndigitsis omitted, it defaults to zero. Delegates tonumber.__roun 阅读全文
posted @ 2013-11-19 01:04 LisPythoniC 阅读(10746) 评论(1) 推荐(2) 编辑
摘要:idict是dict的子类,它的键值和属性是同步的,并且有强大的默认值机制.例如,假设x是idict的一个实例,且x['a']['b']=12,则有x.a.b=12.反之亦然;假设'c'不在x的键集合,那么尝试访问x['c']或者x.c,均会直接初始化默认值.class idict(dict): "super dict class, attributes and keys are equal" def __init__(self,d={},dft=None): idict.dft=dft for k,v in 阅读全文
posted @ 2013-11-17 23:27 LisPythoniC 阅读(1315) 评论(0) 推荐(0) 编辑
摘要:定义标准类dict的一个子类c:>>> class c(dict): pass>>> y=c({1:2,3:4})>>> y{1: 2, 3: 4}>>> y.__dict__{}>>> z={1:2,3:4}>>> z.__dict__Traceback (most recent call last): File "", line 1, in z.__dict__AttributeError: 'dict' object has no attribu 阅读全文
posted @ 2013-11-17 22:19 LisPythoniC 阅读(453) 评论(0) 推荐(0) 编辑
摘要:我之前只知道设置初始值0.今天偶然在Python算法书上看到这个片段,从100个随机数里面找2个最靠近的自然数(不相等):from random import randrange seq = [randrange(10**10) for i in range(100)] dd = float("inf") for x in seq: for y in seq: if x == y: continue d = abs(x-y) if d >> float('-Inf')==-float('Inf')True顺便还收获了NaN的概念, 阅读全文
posted @ 2013-11-12 11:05 LisPythoniC 阅读(40652) 评论(0) 推荐(0) 编辑
摘要:这应该是我编程以来完成的难度最大的一个函数了.因为可能存在的情况非常多,需要设计合理的参数来控制解析流程.经验概要:1.大胆假设一些子功能能够实现,看能否建立整个框架.如果在假设的基础上都无法建立,那么必定需要更换思路.2.穷举所有可能的情况,想清楚该怎么应对它们.如果写完了整个程序才发现,啊!漏了一种情形.代价或许就是全部推翻重写.我算是能够理解为什么教科书上推荐设计程序之前要先画流程图,那实际是要求你编程之前要先知道解法,并以一种直观的形式保存.这样,你在将解法翻译为代码时,思路才清晰,效率才高.什么?难道有人会在不知道解法的情况下就编程?显然有这种人的,我这次就是这样干的.我这次是吃够了 阅读全文
posted @ 2013-11-11 01:03 LisPythoniC 阅读(1031) 评论(0) 推荐(0) 编辑
摘要:python 为何要设计这种?正确:def f(a=2,b=2,c=3): return a+b+cprint(f(*(1,1),c=1))错误:def f(a=2,b=2,c=3): return a+b+cprint(f(*(1,1),1))会被提示:而这个会被提示:def f(a=2,b=2,c=3): return a+b+cprint(f(a=1,*(1,1)))>>> Traceback (most recent call last): File "C:\Users\un_ieval.py", line 91, in print(f(a=1,* 阅读全文
posted @ 2013-11-10 20:34 LisPythoniC 阅读(238) 评论(0) 推荐(0) 编辑
摘要:待处理:>>> re.findall(r'[-+]*\d+(?:\.\d+)?','-++++---+123.012')['-++++---+123.012']>>> re.findall(r'[-+]*\d+(\.\d+)?','-++++---+123.012')['.012'] 阅读全文
posted @ 2013-11-08 18:02 LisPythoniC 阅读(167) 评论(0) 推荐(0) 编辑
摘要:前几天看一个网友提问,如何计算'1+1'这种字符串的值,不能用eval函数.我仿佛记得以前新手时,对这个问题完全不知道如何下手.我觉得处理括号实在是太复杂了,多层嵌套括号怎么解析呢?一些多余的括号呢?而在没有括号的情况下,处理不同运算符之间的优先级又很头疼.而'**'这种占2个字符的运算符,还有着奇特的优先级规则,x**y**z应先计算y**z,并且如果z后面还跟着**的话,则不能先计算y**z..这是最难的地方!但是,今天我竟然把它实现了!而且是用最原始的函数实现的,它们是:str,s.isdigit,s.find,s.count,dict,floatif,i 阅读全文
posted @ 2013-11-08 00:40 LisPythoniC 阅读(995) 评论(0) 推荐(0) 编辑
摘要:下面这个错误是由于在正则[...]的内部,减号'-'是一个有特殊含义的字符(代表字符范围)所以如果需要在[...]内匹配减号'-',需要用反斜杠'\'转义.>>> import re>>> re.split(r'[+\-*/%]','+a-b-c')['', 'a', 'b', 'c']>>> re.split(r'[+-*/%]','+a-b-c')Tracebac 阅读全文
posted @ 2013-11-06 22:20 LisPythoniC 阅读(956) 评论(0) 推荐(0) 编辑
摘要:是吗?def f(x,y,z): return x+y+zt=(200,300)print(f(1,2,3))print(f(1,*t))结果:>>> 6501这是我某个编程细节的简化版本..我原本打算这样做:def f(x,y,z): return x+y+zt=(200,300)print(f(1,2,3))y,z=tprint(f(1,y,z))但我想,万一Python支持这种写法呢?于是我尝试,果然能行!Python真是方便得... 阅读全文
posted @ 2013-11-06 21:28 LisPythoniC 阅读(682) 评论(0) 推荐(0) 编辑
摘要:首先:def f(): print('first')def g(): f()g()def f(): print('second')g()结果:>>> firstsecond又来:def g(): f()g()def f(): print('second')g()结果:NameError: global name 'f' is not defined再来:def g(): f()def f(): print('second')g()结果:>>> second 阅读全文
posted @ 2013-11-06 21:23 LisPythoniC 阅读(209) 评论(0) 推荐(0) 编辑
摘要:几天前自己写了个将阿拉伯数字转为中文财务数字的程序.用的递归,不幸的是它是树形递归.虽然实际过程中不太可能出现金额数字大到让Python递归栈溢出,但是始终是一块心病,这玩意终究在理论上是受限制的.我持续地零散地思考过这个问题,今天终于将其一举拿下,并且还是两个版本,一个是函数式(尾递归),一个是命令式.总算是解决一个心病了.关键在于哪?原来的思路是从左到右转换数字,这种思路用树形递归表示并不难,但是你尝试转化为尾递归时会让你欲仙欲死..反正我是没有弄出来,还浪费了很多时间.不知怎么的,我突然想到尝试从右到左转换,一下子就豁然开朗了.我首先写出了个命令式版本,随后轻松翻译为尾递归版本..这让我 阅读全文
posted @ 2013-11-06 18:51 LisPythoniC 阅读(510) 评论(0) 推荐(0) 编辑
摘要:不知哪儿看到一个说法,大概是当map的函数参数可以直接引用一个已有的函数变量时(比如内建函数int,str之类的),用map更优美些,否则还是用列表解析更直观和快速.我同意此说法.昨天在写一个函数时,最开始用的是map:def process_messages(arr,msgs,mode): return map(lambda msg:process_message(arr,msg,mode),msgs)可以看到,那个lambda显得笨拙而庞大.今天起来转念一想,用列表解析不是更好么:def process_messages(arr,msgs,mode): return [proc... 阅读全文
posted @ 2013-11-06 10:16 LisPythoniC 阅读(594) 评论(0) 推荐(0) 编辑
摘要:TRE=Tail Recursion Elimination创始人是不愿意实现TRE的.他专门用了一篇文章来阐述原因.http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html1.不利于查BUG.2.现有的1000递归深度够用.3.递归不是所有编程的基础,也不是一个日常工具.4.他举了个例子说明第四点,大概是指Python动态的特性不适合递归:def f(x): print 'original' if x > 0: return f(x-1) return 0g = fdef f... 阅读全文
posted @ 2013-11-05 00:41 LisPythoniC 阅读(363) 评论(0) 推荐(0) 编辑
摘要:learning python,5e中讲到.Python的函数参数传递机制是对象引用.Arguments are passed by assignment (object reference). In Python, argumentsare passed to functions by assignment (which, as we’ve learned, means by objectreference). As you’ll see, in Python’s model the caller and function share objectsby references, but th 阅读全文
posted @ 2013-11-02 12:06 LisPythoniC 阅读(326) 评论(0) 推荐(0) 编辑
摘要:据说requests是一个很吊的处理网络问题的第三方库.我折腾了半天.终于在Win上安装好了.网上找到的都不详细,我是反复尝试才成功的.还是自己写一个傻瓜式的指南吧:1.安装 Setuptoolshttp://www.pip-installer.org/en/latest/installing.html#install-or-upgrade-setuptools下载ez_setup.py,双击即可 2.安装 piphttp://www.pip-installer.org/en/latest/installing.html#install-or-upgrade-pip下载get-pip.py,双 阅读全文
posted @ 2013-11-01 22:51 LisPythoniC 阅读(11142) 评论(2) 推荐(1) 编辑
摘要:来自:http://blog.jobbole.com/50705/看下面这个图片”“在这个图片里我们有不同高度的墙。这个图片由一个整数数组所代表,数组中每个数是墙的高度。上边的图可以表示为数组[2,5,1,2,3,4,7,7,6]”“假如开始下雨了,那么墙之间的水坑能够装多少水呢?”“以1×1的方块为单位计算容积。所以,在上边的图中下标为1以左的都会漏掉。下标7以右的也会漏掉。剩下的只有在1和6之间的一坑水,容积是10”---------------------------------------------------------------我大概用了30分钟想到了解法,但是翻译成 阅读全文
posted @ 2013-11-01 18:26 LisPythoniC 阅读(571) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示