python杂七杂八小问题

1、win7系统下,安装完GTK+后,从命令行界面无法启动ipython,提示“failed to create process”。运行easy_install也遇到了这个问题。

原因是安装GTK+时,在c盘创建了名为Program的文件。ipython可能误把这个文件当做Program Files目录,所以导致了错误。将这个文件删去问题即可解决。

2、字典dict、列表list可以放任何东西,比如函数。
def a():
    print yes
    s=[]
    t={}
    s.append(a)
    t[a]=a

3、dict中的元素没有顺序,一般会按照key的首字母排列。

4、执行raw_input时,如果直接回车,输入的将是‘’(空字符串)。not ‘’为True。
5、类继承
若子类需要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参数时,‘.’不匹配换行符。
贪婪问题:匹配非贪婪的任意字符,应写成‘.*?’,不是‘(.*)?’。

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。