每日学习笔记(4)

1,字典的输出

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> person = { ' name ' : ' james ' , ' age ' : 22 }
print ( " %(name)s,%(age)d " % person)

import string
person
= { ' name ' : ' james ' , ' age ' : 22 }
t
= string.Template( " $nameis$age " )
print (t.substitute(person))

2,python模块的安装

假设有下述MyClass模块,

ExpandedBlockStart.gif 代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> class MyClass:
def __init__ (self,name,age):
self.name
= name
self.age
= age
def printInfo(self):
print " %s,%d " % (self.name,self.age)

if __name__ == ' __main__ ' :
c
= MyClass()
c.printInfo()

我们可以使用distutils来为其制作安装包,首先需要创建一个名为setup.py的安装脚本,脚本内容如下:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> from distutils.core import setup

setup(name
= ' MyClass ' ,
version
= ' 1.0 ' ,
py_modules
= [ ' MyClass ' ],
)

然后执行下述命令:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> pythonsetup.pysdist

这样就产生了MANIFEST和dist目录,后者包含了MyClass-1.0.tar.gz。我们可以将MyClass-1.0.tar.gz置于了另一个linux系统来安装此模块,

首先解压缩:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> gunzipMyClass- 1.0 . tar . gz
tarxvfMyClass-
1.0 . tar

解压完成后,可以看到此压缩包中包含了MyClass.py,setup.py,PKG-INFO三个文件

然后用下述命令来完成安装:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> pythonsetup . pyinstall

3,list的remove方法只是删除找到的第一个元素,并不是删除全部

4,若一个truple只包含一个元素,则应当在此元素后有一个逗号,例如 x = (True,)

5,print函数可以用来进行io重定向,

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> f = open( ' d:/1.txt ' , ' w ' )
print ( ' hello ' , ' world ' ,sep = ' , ' ,file = f)
f.close()

6,python中的True,False很有趣,比如 0 in[True,False] 会返回什么值呢?这篇文章从python源码的角度对此进行了分析,非常深刻

7,List Comprehension

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> a = [ 1 , 2 , 3 ]
[num
* 2 for num in a]

我们从右往左看,首先对a进行遍历,每次将一个元素赋给变量num,然后将num*2的值添加到返回列表中,甚至还可以这样:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> import os,glob
[file
for file in glob.glob(‘ * .py’) if os.stat(file).st_size > 6000 ]

这就只返回搜索到的py文件中大小大于6000的文件

8,lambda函数:

ExpandedBlockStart.gif 代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> import os

def split_fully(path):
parent_path,name
= os.path.split(path)
if name == '' :
return (parent_path,)
else :
return split_fully(parent_path) + (name,)
def filterRule(num):
return (num % 2 == 0);

def NormalFilter():
arr
= [ 1 , 2 , 3 , 4 , 6 , 7 , 8 ]
result
= filter(filterRule,arr)
print result
def FilterByLambda():
arr
= [ 1 , 2 , 3 , 4 , 6 , 7 , 8 ]
result
= filter( lambda x:x % 2 == 0,arr)
print result
def FilterByLambda_2():
arr
= [ 1 , 2 , 3 , 4 , 6 , 7 , 8 ]
ruleFunc
= lambda x:x % 2 == 0
result
= filter(ruleFunc,arr)
print result
def testMap():
arr
= [ 1 , 2 , 3 , 4 , 5 , 6 ]
result
= map( lambda x: " thenumis%d " % x,arr)
print result
def testMapWithList():
arr
= [[ 1 , 2 , 3 ],[ 4 , 5 , 6 ],[ 7 , 8 , 9 ]]
result
= map( lambda list:[list[ 1 ],list[0],list[ 2 ]],arr)
print result

if __name__ == " __main__ " :
path
= split_fully( " /home/phinecos " )
print path
NormalFilter()
FilterByLambda()
FilterByLambda_2()
testMap()
testMapWithList()

有一点值得注意,在python3.1中map和filter函数返回的是一个iterator,但以前的版本返回的是一个list,因此,若使用python3.1,则输出的语句应该改成:

<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> print ( * result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值