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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础学习代码之函数和函数式编程相关的知识,希望对你有一定的参考价值。

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

以上是关于Python基础学习代码之函数和函数式编程的主要内容,如果未能解决你的问题,请参考以下文章

2.1python高级编程1-函数式编程和装饰器

python基础之函数式编程

前端必学——函数式编程

Python常用模块学习

JS中函数式编程基本原理简介

Javascript 中的函数式编程