Tags : Ajax  apache  awk  besttrace  bootstrap  CDN  Django  git 

常见问题

用python做些事:高效做事的函数

stevezhou      2015.11.08   


#------命名规则------

 类名:单词首字母大写

 函数名:首个单词字母小写,其后单词首字母大写

 变量名:以'_'连接各单词

 常量:单词字母全部大写

#--------------------

 

基本语法

变量作用域

参数

*arg  #一个元组,元素为未命名的单个变量的

**kargs #一个字典,包含命名的参数,以变量名为Key值

举例:

def test(a,*args,**kargs):

print a,args,kargs

调用:test(1,2,3,4,name='bobo',age=28,city='shanghai')

输出 :1 (2, 3, 4) {'city': 'shanghai', 'age': 28, 'name': 'bobo'}

调用:test(1,2,name='bobo',age=28,3,4)

输出:SyntaxError: non-keyword arg after keyword arg

#要注意实参顺序要对应形参的顺序

求一个数的平方根

二分法的例子

牛顿法的例子

函数式编程——函数做参数

高阶函数 #形参中用函数作参数

自带高阶函数

filter  # filter(str.isdigit,'csv1987zb34'), 结果为:198734; filter(str.isalpha,'csv1987zb34'),结果为 'csvzb'

map  # map(<function object>,<list>),如 map(f,[1,2,3,4]),将列表中的元素都通过函数f处理一次

reduce #递归归纳

#multiprocessing的用法(很简单好用,多进程任务)

# Github----- wordsworth项目,统计词频

函数式编程——lambda

#返回的是一个函数

举例:

lst=[x for x in range(-50,50)]

zs=filter(lambda x:x>0,lst)

c=sorted(lst,cam=lambda x,y:x-y)

lst.sort(lambda x,y:1 if x>y else -1) #sort要改变列表本身,sorted不改变列表本身

回调Callback

#函数作为参数

----------

def test(callback):

print 'test func begin'

callback()

print 'test func end'

def cb1():

print 'callback 1'

def cb2():

print 'callback2'

test(cb1)

test(cb2)

----------

闭包

#绑定外部变量的函数

特征:

1、嵌套函数

2、内部函数使用外部函数变量(通常是外部函数的参数)

3、外部函数返回内部函数

注意:

1、内部函数不能‘改变’外部变量 (即内部函数不产生新的,与外部变量同名的变量)

2、内部函数用到了外部变量为list,则可以能从外部或内部改变值,并且即使外部没有引用也不会回收

装饰器

无嵌套装饰器 #会存在三个问题

两层嵌套装饰器

三层嵌套装饰器

:装饰模式

递归

函数自己调用自己

:快速排序算法的实现

生成器和yield

Iterable,Iterator,Generator

   

 

迭代器库:itertools

itertools.permutations(<列表>)

itertools.product(<列表1>,<列表2>)

itertools.repeat(<列表1>,<次数>)

itertools.chain

#人机井字棋的实现



标签 :  python 上一篇     下一篇