您的位置:首页 > 编程语言 > Python开发

Python基础学习代码之函数和函数式编程

2016-06-23 17:46 639 查看
def func1():
print 'hello world'
res = func1()
print type(res)
def func2():
return ['xyz',10000,-98]
atuple = func2()
x,y,z = func2()
print x,y,z
def func3():
return 'xyz',1000,-98
x,y,z = func3()
print x,y,z
def func4():
return ['xyz',1000,-98,'xxx']
x,y,z,d = func4()
alist = x,y,z,d
print alist
true = lambda :True
print true()
sum = lambda x,y:x + y
summ = lambda x,y=4:x + y
atuplet = lambda *zaz:zaz
print atuplet('a',1)
adictt = lambda **z:z
print adictt(x=3,y=5)
from random import randint
def functest(arg):
return arg % 2
allnums = []
for eachnum in range(9):
allnums.append(eachnum)
print filter(functest,allnums)
allnums = []
for eachnum in range(9):
#    print eachnum
ra = randint(1,99)
#    print ra
allnums.append(ra)
#print filter(lambda x:x%2,allnums)
#print [i for i in allnums if i%2]
print [n for n in [randint(1,99) for i in range(9)] if n%2]
print map(lambda x:x+2,[i for i in range(9)])
print map(lambda x:x**2,[int(i) for i in range(9)])
print map(str,[i for i in range(9)])
print map(lambda x,y:x+y,[1,2,3],[1,2,3])
print map(lambda x,y:(x+y,x-y),[1,2,3],[1,2,3])
print map(None,[1,2,3],[1,2,3])
print reduce(lambda x,y:x+y,[i for i in range(3)])
from operator import  mul,add
from functools import partial
add1 = partial(add,1)
mul100 = partial(mul,100)
basetwo = partial(int,base=2)
basetwo.__doc__ = 'convert base 2 string to an int'
print basetwo('10010')
import Tkinter
root = Tkinter.Tk()
mybutton = partial(Tkinter.Button,root,fg='white',bg='blue')
b1 = mybutton(text='button1')
b2 = mybutton(text='button2')
qb = mybutton(text='quit',bg='red',command=root.quit)
b1.pack()
b2.pack()
qb.pack(fill=Tkinter.X,expand=True)
root.title('pfas!')
root.mainloop()
is_this_global = 'xyz'
def foo():
global is_this_global
this_is_local = 'abc'
is_this_global = 'def'
print this_is_local + is_this_global
def foor():
m = 3
def bar():
n = 4
print m + n
print m
bar()
def counter(start=0):
count = [start]
def incr():
count[0] += 1
return count[0]
return incr
count = counter()
output = '<int %r id=%#0x val=%d>'
w = x = y = z = 1
def f1():
x = y = z = 2
def f2():
y = z = 3
def f3():
z = 4
print output%('w',id(w),w)
print output%('x',id(x),x)
print output%('y',id(y),y)
print output%('z',id(z),z)
clo = f3.func_closure
if clo:
print 'f3 closure vars:',[str(c) for c in clo]
else:
print 'no f3 closure vars'
f3()
clo = f2.func_closure
if clo:
print 'f2 closure vars:',[str(c) for c in clo]
else:
print 'no f2 closure vars'
f2()
clo = f1.func_closure
if clo:
print 'f1 closure vars:',[str(c) for c in clo]
else:
print 'no f1 closure vars'
from time import time
def logged(when):
def log(f,*args,**kargs):
print '''called:
function:%s
args:%s
kargs:%s'''%(f,args,kargs)
def pre_logged(f):
def wrapper(*args,**kargs):
log(f,*args,**kargs)
return f(*args,**kargs)
return wrapper
def post_logged(f):
def wrapper(*args,**kargs):
now = time()
try:
return f(*args,**kargs)
finally:
log(f,*args,**kargs)
print 'time delta:%s' % (time()-now)
return wrapper
try:
return {'pre':pre_logged,'post':post_logged}[when]
except KeyError,e:
raise ValueError(e),"must be 'pre' or 'post'"
@logged('post')
def hello(name):
print 'hello,',name
hello('world!')
x = 10
def ffoo():
y = 5
bar = lambda z:x+z
print bar(y)
j,k = 1,2
def proc1():
j,k = 3,4
print 'j==%d and k==%d'  % (j,k)
def proc2():
j = 6
proc1()
print 'j==%d and k==%d' % (j,k)
k = 7
proc1()
print 'j==%d and k==%d' % (j,k)
j = 8
proc2()
print 'j==%d and k==%d' % (j,k)
def max2(arg1,arg2):
if arg1 > arg2:
return arg1
elif arg1 == arg2:
return 'equal'
else:
return arg2
max22 = lambda a,b:a if a > b else b
min22 = lambda a,b:a if a < b else b
def heji(a,b):
return a+b,a*b
x,y = heji(3,4)
def mymin(a,b,*num):
minnum = min22(a,b)
for each in num:
minnum = min22(minnum,each)
return minnum
def mymax(a,b,*num):
maxnum = max22(a,b)
for each in num:
maxnum = max22(maxnum,each)
return maxnum
trantime = lambda m:(unicode(m / 60),unicode(m % 60))
print ':'.join(trantime(80))
a = ['jia','wo','ma']
b = ['get','hoa','?']
print map(None,a,b)
print zip(a,b)
def oddyear(y):
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:
return y
print filter(oddyear,range(1999,2030))
print [y for y in range(1999,2030) if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0]
print reduce(lambda x,y:x+y,range(6)) / float(6)
cl = lambda x:x.strip()
res = map(cl,open('e:\\thefile.txt'))
import time
def timeit(arg):
starttime = time.clock()
result = arg
endtime = time.clock()
return (result,endtime-starttime)
def arg(a,b):
return a * b
print timeit(arg(3,4))
mult = lambda x,y:x * y
print reduce(mult,range(9)[1:])


本文出自 “xwb” 博客,请务必保留此出处http://xiewb.blog.51cto.com/11091636/1792275
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: