1,字典的输出
print("%(name)s,%(age)d" % person)
import string
person = {'name':'james','age':22}
t = string.Template("$name is $age")
print(t.substitute(person))
2,python模块的安装
假设有下述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的安装脚本,脚本内容如下:
setup(name = 'MyClass',
version = '1.0',
py_modules = ['MyClass'],
)
然后执行下述命令:
这样就产生了MANIFEST和dist目录,后者包含了MyClass-1.0.tar.gz。我们可以将MyClass-1.0.tar.gz置于了另一个linux系统来安装此模块,
首先解压缩:
tar xvf MyClass-1.0.tar
解压完成后,可以看到此压缩包中包含了MyClass.py,setup.py,PKG-INFO三个文件
然后用下述命令来完成安装:
3,list的remove方法只是删除找到的第一个元素,并不是删除全部
4,若一个truple只包含一个元素,则应当在此元素后有一个逗号,例如 x = (True,)
5,print函数可以用来进行io重定向,
print('hello','world',sep=',',file=f)
f.close()
6,python中的True,False很有趣,比如 0 in[True,False] 会返回什么值呢?这篇文章从python源码的角度对此进行了分析,非常深刻
7,List Comprehension
[num*2 for num in a]
我们从右往左看,首先对a进行遍历,每次将一个元素赋给变量num,然后将num*2的值添加到返回列表中,甚至还可以这样:
[file for file in glob.glob(‘*.py’) if os.stat(file).st_size > 6000]
这就只返回搜索到的py文件中大小大于6000的文件
8,lambda函数:
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: "the num is %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,则输出的语句应该改成: