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
'
],
)
然后执行下述命令:
这样就产生了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
=
'
,
'
,file
=
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,则输出的语句应该改成: