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