曲则全,枉则直,洼则盈,敝则新,少则得,多则惑。
是以圣人抱一为天下式。不自见,故明;不自是,故彰;不自伐,故有功;不自矜,故长。
有趣的Python
上一篇 /
下一篇 2010-08-12 22:19:54
/ 个人分类:脚本语言
好久没弄Python了,记得刚接触到Python的时候,就特别喜欢,觉得很有意思,挺有趣的,喜欢他的简洁和方便,而如今,好像只会Python了。。。
1. 文件,函数,类
文件
Python中,一个py文件,就是一个模块,可以用import导入。所以就有可能项目中,所有文件都是.py,比如各种配置信息等。假设需要一个配置文件MyConf.py,里面内容:
#config file
DB='MySQL'
id='ermine'
passwd='51testing'
>>> import MyConf
>>> MyConf.DB
'MySQL'
函数和类
>>> def MyFunc(num1,num2):
return num1+num2
>>> y=MyFunc
>>> y
<function MyFunc at 0x01F4BDF0>
y是记录了函数MyFunc的地址,所以,可以把y当成参数来调用
同样的还有类和对象
>>> class MyClass():
def __init__(self):
self.m='hello world'
>>> z=MyClass
>>> z
<class __main__.MyClass at 0x01F699C0>
>>> h=MyClass()
>>> h
<__main__.MyClass instance at 0x01F92580>
可以将类z作为参数调用,需要的时候,再实例化。
函数和类混用,觉得很有意思
>>> def ClassFunc():
c=MyClass()#这里返回的是类的实例,也可以返回类c=MyClass
return c
>>> y=ClassFunc()
>>> y
<__main__.MyClass instance at 0x01F48788>
>>> y=ClassFunc
>>> y
<function ClassFunc at 0x01FA2F70>
2. 函式编程(PF)
对于函式编程,自己了解的不多,只是觉得Python里的几个特性比较方便
表达式lambda
函数map,reduce,filter
具体用法看帮助就比较容易懂了,但是写出好的表达式,还得多练练手。。。
据说真正的PF可以用表达式代替所有语句,不过那样可能可读性不太好,不了解,猜测而已。
比如筛选出列表中大于5的数字
>>> mylist=[1,3,6,7]
>>> filter(lambda x:x>5,mylist)
[6, 7]
还可以不用函数,直接用列表
>>> [i for i in mylist if i>5]
[6, 7]
3. doctest
记得python中国社区的那句话,以
单元测试为荣。Python的单元测试,不仅有和Junit类似的unittest,还有个doctest。
假设代码如下:
>>> def ismale(name,flag):
if flag=='Y':
print name+" is a male"
>>> ismale("John",'Y')
John is a male
如果用doctest,就需要修改成
>>> def ismale(name,flag):
"""
>>> ismale("John",'Y')
John is a male
"""
if flag=='Y':
print name+" is a male"
中间的注释,其实就是测试步骤和期望结果,然后就能用doctest了
>>> import doctest
>>> doctest.testmod()
TestResults(failed=0, attempted=1)
既可以做注释,当help时,有提示信息,又可以做简单的测试,两不误^_^.
收藏
举报
TAG: