首页 > 编程语言 > 详细

python杂七杂八小问题

时间:2014-02-17 18:32:25      阅读:449      评论:0      收藏:0      [点我收藏+]

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

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

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

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

4、执行raw_input时,如果直接回车,输入的将是‘’(空字符串)。not ‘’为True。
5、类继承
若子类需要init,但又要保留超类的init,那么:
bubuko.com,布布扣
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
bubuko.com,布布扣

5、getattr

getattr(object,name)和object.name相似。例如
bubuko.com,布布扣
import os
getattr(os,getcwd)() #和os.getcwd()作用相同
bubuko.com,布布扣

在类中有如下形式

bubuko.com,布布扣
class Game(object):
#······
    def play(self):
        next = self.start

        while True:
            print "\n--------"
            room = getattr(self, next)
            next = room()
#······
bubuko.com,布布扣

6、__dict__

究竟函数的__dict__是干什么用的呢?
其实它提供给函数增加属性的功能
看一个简单的例子:
bubuko.com,布布扣
In [4]: def add(x,y):
   ...:     return x+y
   ...: 
bubuko.com,布布扣

显是一下这个函数的属性:

bubuko.com,布布扣
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‘]
bubuko.com,布布扣

那么我们现在来给这个函数增加一个属性:

bubuko.com,布布扣
In [14]: def mul(x,y):
   ....:     return x*y
   ....: 

In [15]: add.__dict__[‘mul‘]=mul
bubuko.com,布布扣

我们再来看一下add的属性列表

bubuko.com,布布扣
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‘]
bubuko.com,布布扣

发现已经多了一个属性mul,而且和我们定义的函数一样是可以调用的

 

bubuko.com,布布扣
In [17]: add.mul(10,20)
Out[17]: 200
bubuko.com,布布扣

 

7、如何控制浮点数据?
比如小数点后保留两位,可写成‘%.2f’%··
8、python输出中文需要用gbk

9、判断文本文件读取结束
文本的最后一行的下一行是空白,可以用

bubuko.com,布布扣
line=f.readline()
if not line:
    ····
bubuko.com,布布扣

10、正则表达式上的问题

想着对一个中文txt文件进行文字替换。在进行正则表达式匹配时遇到了编码问题、多行替换问题、贪婪问题。

编码问题:对于中文,读取的文本必须和正则表达式使用相同的编码,才能顺利匹配。
多行替换问题:当compile不带DOTALL参数时,‘.’不匹配换行符。
贪婪问题:匹配非贪婪的任意字符,应写成‘.*?’,不是‘(.*)?’。

 

 

python杂七杂八小问题

原文:http://www.cnblogs.com/osway/p/3552433.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!