码迷,mamicode.com
首页 > 编程语言 > 详细

python天天美味

时间:2015-07-16 15:46:13      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

Python中的splitlines用来分割行。当传入的参数为True时,表示保留换行符 \n。通过下面的例子就很明白了:

基本语法:S.splitlines(keepends=False) -> list of strings

mulLine = """Hello!!!
 Wellcome to Python‘s world!
    There are a lot of interesting things!
        Enjoy yourself. Thank you!"""

print ‘‘.join(mulLine.splitlines())
print ‘------------‘
print ‘‘.join(mulLine.splitlines(True))

 

利用这个函数,就可以非常方便写一些段落处理的函数了,比如处理缩进等方法。如Cookbook书中的例子:

def addSpaces(s, numAdd):
    white = " "*numAdd
    return white + white.join(s.splitlines(True))
def numSpaces(s):
    return [len(line)-len(line.lstrip( )) for line in s.splitlines( )]
def delSpaces(s, numDel):
    if numDel > min(numSpaces(s)):
        raise ValueError, "removing more spaces than there are!"
    return ‘\n‘.join([ line[numDel:] for line in s.splitlines( ) ])
def unIndentBlock(s):
    return delSpaces(s, min(numSpaces(s)))

Os.path.isdir(path)

os.path.isdir(folder + ‘/‘ + fileName):

 

读取所有内容read()

读取固定的字节read(int)

读取每行readlines()

遍历:for files in files1:

        Print files

追加w+

写入多行writelines

注意,调用writelines写入多行在性能上会比使用write一次性写入要高。

读取文件中特定的一行

Linecache模块

例子:print linecache.getline(‘2.1_open.py‘, 4)

计算指定的时间

import datetime,calendar

 

lastFriday=datetime.date.today()

oneday=datetime.timedelta(days=1)

lastFriday-=oneday

while lastFriday.weekday()!=calendar.FRIDAY:

    lastFriday-=oneday

print lastFriday.strftime(‘%A,%d-%b-%Y‘)

计算当前时间和过去时间之间的差:

t1 = datetime.datetime.now()
quickshort(data, 0, len(data) - 1)
t2 = datetime.datetime.now()

print t1 - t2

Sys.argv[]本身是个路径,是从1开始

1表示是spe

 

Copy.copy()浅复制

Copy.deepcopy()深复制

For遍历几种

For iter in seq:print iter

 

For index in range(len(ser))):print ser[index]

 

For index,iter in enumerate(s):print index,iter

 

多组数组

比如5*3每项为0的数组

multilist = [[0 for col in range(5)] for row in range(3)]

一维:[int]*int

二维:[[int]*int]*int

因为[0] * 5是一个一维数组的对象,* 3的话只是把对象的引用复制了3次,比如,我修改multi[0][0]:

multi = [[0] * 5] * 3
multi[0][0] = ‘Love China‘print multi

修改了multi[0][0],却把我们的multi[1][0],multi[2][0]也修改了。这不是我们想要的结果。

multilist = [[0] * 5 for row in range(3)]
multilist[0][0] = ‘Love China‘print multilist

我们看输出结果:
[[‘Love China‘, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
恩,没问题。但是,由于使用 * 的方法比较容易引起混淆导致Bug,所以还是推荐使用上面第一种方法,即:multilist = [[0 for col in range(5)] for row in range(3)]

__getattr__和__setattr__可以用来对属性的设置和取值进行处理

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->class Book(object):

    def __setattr__(self, name, value):

        if name == ‘value‘:

            object.__setattr__(self, name, value - 100)

        else:

            object.__setattr__(self, name, value)

    def __getattr__(self, name):

        try:

            return object.__getattribute__(name)

        except:

            return name + ‘ is not found!‘

    def __str__(self):

        return self.name + ‘ cost : ‘ + str(self.value)

 

c = Book()

c.name = ‘Python‘

c.value = 100

print c.name

print c.value

print c

print c.Type

 

__metaclass__魔法

只要设置成任意的与type相同的参数可调用对象,就能够提供自定义元类

class PointlessMetaclass(type):    def __new__(meta, name, bases, attrs):        # do stuff...        return type.__new__(meta, name, bases, attrs)

 __new__ 方法中我们能够读取或改变传入的用以创建新类的参数。从而能够内省属性字典和改动、增加或者删除成员。

尽管当实例化一个类时这两个函数都会被调用,但覆盖 __new__ 比 __init__ 更为重要。__init__ 初始化一个实例,而__new__ 的职责是创建它。因此如果元类用以自定义类的创建,就需要覆盖 type 的 __new__。

使用新类而非仅仅提供工厂函数的原因在于如果使用工厂函数(那样只是调用 type)的话元类不会被继承。

class WhizzBang(object):...     __metaclass__ = PointlessMetaclass...>>> WhizzBang<class ‘__main__.WhizzBang‘>>>> type(WhizzBang)<class ‘__main__.PointlessMetaClass‘>

WhizzBang 是一个类,但它现在已经不是 type 的实例,而是我们自定义的元类的实例了……

元类将用在创建使用了它的新类时调用,这里是一些关于这样做的好处的观点:

  • 装饰(Decorate)类的所有方法,用以日志记录或者性能剖分。
  • 自动 Mix-in 新方法
  • 在创建时注册类。(例如自动注册插件或从类成员创建数据库模式。)
  • 提供接口注册,功能自动发现和接口适配。
  • 类校验:防止子类化,校验所有的方法是否都有 docstrings。

最重要之处在于元类中是在最后对 type 的调用时才真正创建类,所以可以自由地随你喜欢地改变属性字典(以及名称和元组形式的基类序列)。

一些流行的 Python ORM(Object Relational Mappers(对象关系影射),用以和数据库协同工作)也如此使用元类。

哦,还有因为元类是继承的,所以你能够提供一个使用了你的元类的基类,而继承自它的子类就无需显式声明它了。

Python里面的Decorators对函数、方法或类进行装饰,从而达到增加对象的职责,或控制对象调用的作用

class Coffee(object):    def get_cost(self):        return 1.0

coffee = Coffee()print coffee.get_cost() # 1.0

 

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->class Milk(Coffee):

    def __init__(self, coffee):

        self.coffee = coffee

 

    def get_cost(self):

        return self.coffee.get_cost() + 0.5

 

coffee = Coffee()

coffee = Milk(coffee)

print coffee.get_cost() # 1.5

 

他们就是filter, map,reduce。

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

 

-->>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

 

>>>

 

>>> print filter(lambda x: x % 3 == 0, foo)

 

[18, 9, 24, 12, 27]

 

>>>

 

>>> print map(lambda x: x * 2 + 10, foo)

 

[14, 46, 28, 54, 44, 58, 26, 34, 64]

 

>>>

 

>>> print reduce(lambda x, y: x + y, foo)

 

创建一个函数数组fs=[f0,...,f9] where fi(n)=i+n. 

fs = [(lambda n, i=i : i + n) for i in range(10)]

 fs[3](4)

http://www.cnblogs.com/coderzh/archive/2010/05/02/python-cookbook-pyspy.html

 

‘;‘.join(["%s=%s"%(k,v)for k,v in par.items()])

 S.join(iterable) -> string

 myP={‘sea‘:‘china‘,\

      ‘data‘:‘dog‘,\

      ‘uid‘:‘sq‘,\

      ‘pwd‘:‘ser‘\

     }

python天天美味

标签:

原文地址:http://www.cnblogs.com/mhxy13867806343/p/4058327.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!