python天天美味

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‘\

}

时间: 2024-10-21 04:50:07

python天天美味的相关文章

程序游戏推荐(C语言贪吃蛇,python天天酷跑(需要安装pygame),js是狠人就坚持30s)

下面是下载位置,我把他们上传到我的文件下了. C语言贪吃蛇:https://files.cnblogs.com/files/ITXiaoAng/%E8%B4%AA%E5%90%83%E8%9B%87.rar python天天酷跑:https://files.cnblogs.com/files/ITXiaoAng/%E5%A4%A9%E5%A4%A9%E9%85%B7%E8%B7%91.zip 30s: https://files.cnblogs.com/files/ITXiaoAng/%E7%B

python高级编程技巧

http://blog.sina.com.cn/s/blog_a89e19440101fb28.html Python列表解析语法[]和生成 器()语法类似 [expr for iter_var in iterable] 或 [expr for iter_var in iterable if cond_expr] 例子:[i for i in range(10)if i %2==0] Enumerate >>> i=0 >>> s=['a','b','c'] >&

Python 技能树-Index

命令行工具 ipython 第 1 章 IPython:超越 Python pylint pylint在项目中的使用 pylint的配置和使用 为什么Pylint既有用又不能用,以及如何使用它 如何使用 Pylint 来规范 Python 代码风格 Python基础知识点 Python打包知识点 关于python中的setup.py-孔令贤 PEP PEP Index Python中10个必读的PEP提案 Python面向对象 一篇文章搞懂Python中的面向对象编程 module与packag

老弟学会Python后做了个自动扫雷程序给他的小伙伴,天天玩的不亦乐乎~

自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式. 一.准备工作 1.扫雷游戏 我是win10,没有默认的扫雷,所以去扫雷网下载 http://www.saolei.net/BBS/ 2.python 3 我的版本是 python 3.6.1 3.python的第三方库 win32api,win32gui,win32con,Pillow,numpy,opencv可通过 pip install --upgrade SomePack

Python+Requests接口测试教程(1):Fiddler抓包工具

本书涵盖内容:fiddler.http协议.json.requests+unittest+报告.bs4.数据相关(mysql/oracle/logging)等内容.刚买须知:本书是针对零基础入门接口测试和python+requests自动化的,首先本书确实写的比较基础,对基础内容也写的很详细,所以大神绕道. 为什么要先学fiddler? 学习接口测试必学http协议,如果直接先讲协议,我估计小伙伴们更懵,为了更好的理解协议,先从抓包开始.结合抓包工具讲http协议更容易学一些. 1.1 抓fir

python爬虫从入门到放弃(六)之 BeautifulSoup库的使用

上一篇文章的正则,其实对很多人来说用起来是不方便的,加上需要记很多规则,所以用起来不是特别熟练,而这节我们提到的beautifulsoup就是一个非常强大的工具,爬虫利器. beautifulSoup “美味的汤,绿色的浓汤” 一个灵活又方便的网页解析库,处理高效,支持多种解析器.利用它就不用编写正则表达式也能方便的实现网页信息的抓取 快速使用 通过下面的一个例子,对bs4有个简单的了解,以及看一下它的强大之处: from bs4 import BeautifulSoup html = '''

机器学习系列(9)_机器学习算法一览(附Python和R代码)

本文资源翻译@酒酒Angie:伊利诺伊大学香槟分校统计学同学,大四在读,即将开始计算机的研究生学习.希望认识更多喜欢大数据和机器学习的朋友,互相交流学习. 内容校正调整:寒小阳 && 龙心尘 时间:2016年4月 出处:http://blog.csdn.net/han_xiaoyang/article/details/51191386 http://blog.csdn.net/longxinchen_ml/article/details/51192086 声明:版权所有,转载请联系作者并注

【python项目实战】BBS论坛(2)页面初始设计

一.下载一个页面模板(当然也可以自己写) 找到如下页面,然后右键--另存为,全部保存 http://v3.bootcss.com/examples/navbar-fixed-top/# 下载下来的文件就是初步模板 二.编辑settings.py 1.加入 静态页面路径,并在项目目录里面新建statics文件夹 STATICFILES_DIRS = (     "%s/%s" %(BASE_DIR, "statics"), ) 2. 加入DIRS,默认生成的是空 DI

基于天天动听API开发在线音乐查询网站

预览图 源码下载 地址:https://github.com/bajdcc/dev/tree/master/ttpod 文件夹说明: App_Code,WCF服务 Script,离线下载的celery任务配置 dl,离线下载接口 ttpod,网站主体 Bin,组件类库 实现功能 基于天天动听实现输入提示.查询功能 列表显示每条曲目的信息,自带搜索和排序功能 实现网页播放,支持大部分部分的视频与音频,并提供下载地址 适配较新版本的IE.Firefox和Chrome浏览器 支持广播,即可以远程使多个