Skip to content

Commit eb4f5f4

Browse files
author
kangxiaoyu
committed
高阶函数的学习
1 parent c8ec754 commit eb4f5f4

31 files changed

+243
-0
lines changed

2017-04-2-4/modules/1.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
hello world

2017-04-2-4/modules/alias_module.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
' a est module '
4+
__author__='Kangxiaoxiao'
5+
6+
try:
7+
import cStringIO as StringIO
8+
except ImportError: # 导入失败会捕获到ImportError
9+
import StringIO

2017-04-2-4/modules/helloModule.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
' a est module '
4+
__author__='Kangxiaoxiao'
5+
6+
import sys
7+
def test():
8+
args=sys.argv
9+
if len(args)==1:
10+
print 'Hello,world!'
11+
elif len(args)==2:
12+
print 'Hello,%s!' % args[1]
13+
else:
14+
print 'Too many arguments!'
15+
if __name__=='__main__':
16+
test()

2017-04-2-4/modules/helloModule.pyc

544 Bytes
Binary file not shown.

2017-04-2-4/modules/read1.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
try:
4+
f=open('/root/python1/python_execise/2017-04-2-4/modules/1.txt','r')
5+
print f.read()
6+
finally:
7+
if f:
8+
f.close()
9+

2017-04-2-4/operata_file/print_os.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
import os
4+
print os.name
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
import os
4+
print os.uname()

2017-04-25/am/decorator/decorator.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def now():
4+
print('2017-04-25')
5+
f=now
6+
f()
7+
print now.__name__
8+
print f.__name__
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def now():
4+
print('2017-04-25')
5+
f=now
6+
f()
7+
print now.__name__
8+
print f.__name__
9+
10+
def log(func):
11+
def wrapper(*args,**kw):
12+
print('call %s():' % func.__name__)
13+
return func(*args,**kw)
14+
return wrapper
15+
@log
16+
def now():
17+
print('2017-04-25')
18+
if __name__=='__main__':
19+
now()
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def log(text):
4+
def decorator(func):
5+
def wrapper(*args,**kw):
6+
print('%s %s():' % (text, func.__name__))
7+
return func(*args,**kw)
8+
return wrapper
9+
return decorator
10+
@log('execute')
11+
def now():
12+
print('2017-04-25')
13+
if __name__=='__main__':
14+
now()

2017-04-25/am/filter_1/filter_test.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def is_odd(n):
4+
return n % 2 == 1
5+
if __name__=='__main__':
6+
print filter(is_odd,[1,2,4,5,6,9,10,15])
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def is_odd(n):
4+
return n % 2 == 1
5+
def not_empty(s):
6+
return s and s.strip()
7+
if __name__=='__main__':
8+
print filter(is_odd,[1,2,4,5,6,9,10,15])
9+
print filter(not_empty,['A','','B',None,'C',' '])
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def f(x):
4+
return x*x
5+
if __name__=='__main__':
6+
L=[]
7+
for n in [1,2,3,4,5,6,7,8,9]:
8+
L.append(f(n))
9+
print L
10+
11+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/env python
2+
def char2num(s):
3+
return{'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]
4+
def str2int(s):
5+
return reduce(lambda x,y:x*10+y,map(char2num,s))
6+
if __name__=='__main__':
7+
r=str2int('13579')
8+
print r
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def f(x):
4+
return x*x
5+
if __name__=='__main__':
6+
result = map(f,[1,2,3,4,5,6,7,8,9])
7+
print result
8+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def num_l_to_char_l():
4+
r=map(str,[1,2,3,4,5,6,7,8,9])
5+
print r
6+
if __name__=='__main__':
7+
num_l_to_char_l()
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def add(x,y):
4+
return x + y
5+
if __name__=='__main__':
6+
r=reduce(add,[1,3,5,7,9])
7+
print r

2017-04-25/am/map_reduce/reduce_fn.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def fn(x,y):
4+
return x*10 + y
5+
if __name__=='__main__':
6+
r=reduce(fn,[1,3,5,7,9])
7+
print r
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def fn(x,y):
4+
return x*10 + y
5+
def char2num(s):
6+
return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]
7+
if __name__=='__main__':
8+
r=reduce(fn,map(char2num,'13579'))
9+
print r
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#再看reduce的用法。
2+
#reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,i
3+
#reduce把结果继续和序列的下一个元素做累积计算,其效果就
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
方法是再创建一个函数,用该函数的参数绑定循环变量当前的值,无论该循环变量后续如何更改,已绑定到函数参数的值不变:
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def count():
4+
def f(j):
5+
def g():
6+
return j*j
7+
return g
8+
fs=[]
9+
for i in range(1,4):
10+
fs.append(f(i))
11+
return fs
12+
if __name__=='__main__':
13+
f1,f2,f3=count()
14+
print f1()
15+
print f2()
16+
print f3()
17+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def lazy_sum(*args):
4+
def sum():
5+
ax=0
6+
for n in args:
7+
ax=ax+n
8+
return ax
9+
return sum
10+
f=lazy_sum(1,3,5,7,9)
11+
print f
12+
print f()
13+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def count():
4+
fs=[]
5+
for i in range(1,4):
6+
def f():
7+
return i*i
8+
fs.append(f)
9+
return fs
10+
if __name__=='__main__':
11+
f1,f2,f3=count();
12+
print f1()
13+
print f2()
14+
print f3()
15+
12 KB
Binary file not shown.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def reversed_cmp(x,y):
4+
if x > y:
5+
return -1
6+
if x < y:
7+
return 1
8+
return 0
9+
if __name__=='__main__':
10+
print sorted([36,21,12,9,21],reversed_cmp)

2017-04-25/am/sorted_buildin.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
def sorted_test():
4+
r=sorted([36,5,12,9,21])
5+
return r
6+
if __name__=='__main__':
7+
r=sorted_test()
8+
print r

2017-04-25/am/variable_function.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
4+
def test():
5+
f=abs
6+
print f(-10)
7+
if __name__=='__main__':
8+
test()
9+

2017-04-25/am/高阶函数.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
高阶函数英文叫Higher-orger function. 什么是高阶函数,
2+
变量可以指向函数。
3+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/env python
2+
# -*- coding:utf-8 -*-
3+
import functools
4+
if __name__=='__main__':
5+
int2=functools.partial(int,base=2)
6+
print int2('1000000')
7+
print int2('1010101')

0 commit comments

Comments
 (0)