每日学习笔记(4)
来源:互联网 发布:java 日历 calendar 编辑:程序博客网 时间:2024/05/16 18:34
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))
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()
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'],
)
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
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()
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]
[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]
[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()
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)
- 每日学习笔记(4)
- 每日学习笔记
- 每日学习笔记(1)
- 每日学习笔记(2)
- 每日学习笔记(3)
- 每日学习笔记(5)
- 每日学习笔记(12)
- 每日学习笔记(13)
- 每日学习笔记(14)
- 每日学习笔记(15)
- 每日学习笔记(17)
- 每日学习笔记(18)
- 每日学习笔记(19)
- 每日学习笔记(20)
- 每日学习笔记(21)
- 每日学习笔记(23)
- Android 每日学习笔记
- 每日学习笔记(23)
- 第18章 退出系统
- 第17章 重新登录
- 第3章 用户账户管理
- 关于学好电脑~~
- 应对需求变更的软件的设计——我的想法
- 每日学习笔记(4)
- 安裝python開發環境!
- 关于重载,覆盖,隐藏
- qsort() 和 sort()
- 文件夹加密 使用Windows漏洞即可完成
- Spring Architecture
- WCF服务编程设计规范(9):中文、中英文对照、英文版资料共享下载
- VS 2010中测试驱动型开发
- 推荐Visual Studio 2010新功能-IntelliTrace(智能跟踪)