python杂七杂八小问题
1、win7系统下,安装完GTK+后,从命令行界面无法启动ipython,提示“failed to create process”。运行easy_install也遇到了这个问题。
原因是安装GTK+时,在c盘创建了名为Program的文件。ipython可能误把这个文件当做Program Files目录,所以导致了错误。将这个文件删去问题即可解决。
def a(): print ‘yes‘ s=[] t={} s.append(a) t[‘a‘]=a
3、dict中的元素没有顺序,一般会按照key的首字母排列。
若子类需要init,但又要保留超类的init,那么:
class cat(object): def __init__(self,name): self.legs_num = 4 def walk(self): pass class mimi(cat): def __init__(self): cat.__init__(self,name) self.hair = ‘white‘ def smile(self): pass
5、getattr
getattr(object,name)和object.name相似。例如import os getattr(os,‘getcwd‘)() #和os.getcwd()作用相同
在类中有如下形式
class Game(object): #······ def play(self): next = self.start while True: print "\n--------" room = getattr(self, next) next = room() #······
6、__dict__
究竟函数的__dict__是干什么用的呢?其实它提供给函数增加属性的功能
看一个简单的例子:
In [4]: def add(x,y): ...: return x+y ...:
显是一下这个函数的属性:
In [13]: print dir(add) [‘__call__‘, ‘__class__‘, ‘__closure__‘, ‘__code__‘, ‘__defaults__‘, ‘__delattr__‘, ‘__dict__‘, ‘__doc__‘, ‘__format__‘, ‘__get__‘, ‘__getattribute__‘, ‘__globals__‘, ‘__hash__‘, ‘__init__‘, ‘__module__‘, ‘__name__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘func_closure‘, ‘func_code‘, ‘func_defaults‘, ‘func_dict‘, ‘func_doc‘, ‘func_globals‘, ‘func_name‘]
那么我们现在来给这个函数增加一个属性:
In [14]: def mul(x,y): ....: return x*y ....: In [15]: add.__dict__[‘mul‘]=mul
我们再来看一下add的属性列表
In [16]: print dir(add) [‘__call__‘, ‘__class__‘, ‘__closure__‘, ‘__code__‘, ‘__defaults__‘, ‘__delattr__‘, ‘__dict__‘, ‘__doc__‘, ‘__format__‘, ‘__get__‘, ‘__getattribute__‘, ‘__globals__‘, ‘__hash__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘func_closure‘, ‘func_code‘, ‘func_defaults‘, ‘func_dict‘, ‘func_doc‘, ‘func_globals‘, ‘func_name‘, ‘mul‘]
发现已经多了一个属性mul,而且和我们定义的函数一样是可以调用的
In [17]: add.mul(10,20) Out[17]: 200
7、如何控制浮点数据?
比如小数点后保留两位,可写成‘%.2f’%··
8、python输出中文需要用gbk
9、判断文本文件读取结束
文本的最后一行的下一行是空白,可以用
line=f.readline() if not line: ····
10、正则表达式上的问题
想着对一个中文txt文件进行文字替换。在进行正则表达式匹配时遇到了编码问题、多行替换问题、贪婪问题。
编码问题:对于中文,读取的文本必须和正则表达式使用相同的编码,才能顺利匹配。
多行替换问题:当compile不带DOTALL参数时,‘.’不匹配换行符。
贪婪问题:匹配非贪婪的任意字符,应写成‘.*?’,不是‘(.*)?’。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。