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:])
时间: 2024-08-10 17:06:10

Python基础学习代码之函数和函数式编程的相关文章

python基础学习-内置函数

#!/usr/bin/env python # -*- coding:utf-8 -*- 系统内置函数 n =abs(-1) #绝对值 print(n) #bytes()函数 s="离开" re= bytes(s,encoding="utf-8")  # bytes() 把字符串 转换成字节 print(re) res = str(re,encoding="utf-8") #转换回字符串 print(res) re= bytes(s,encodi

python 基础 学习 内置函数

内置函数       例:如果返回数字的绝对值 ,写函数是非常不方便的 [[email protected] tools]# python fa.py  10 [[email protected] tools]# cat fa.py  #!/usr/bin/python def a(x):     if x < 0 :         return -x      return x  n = a(-10) print n  #帮助查看# >>> help(len) 用法: help

python核心编程学习记录之函数与函数式编程

@func function 意思是func(function) @func(a) function 意思是func(a)这是个函数对象,在去调用function函数 如果要传额外的值,只传值用*tuple如'abc',如果要指定关键词用**dict如abc='abc'

Python基础学习代码之执行环境

class C(object):     def __call__(self, *args, **kwargs):         print "I'm callable! called with args:\n",args c = C() c('a',1) single_code = compile("print 'hello,world!'",'','single') exec(single_code) eval_code = compile('100*3','

Python基础学习代码之变量和类型

foo = 'abc' for i in range(len(foo)):     print "%d , %s" % (i, foo[i]) print [x ** 2 for x in range(5) if not x % 2] try:     f = open('e:\XIN_370_logic.tx', 'r')     for eachline in f:         print eachline     f.close() except IOError, e:   

Python基础学习代码之数字

# import math # print coerce(1L, 134) # """数据类型转换""" # print coerce(0.4, 123) # print coerce(0j, 234) # print divmod(125, 5) # """除法运算""" # print divmod(4, 3) # print pow(2, 4) # ""&quo

Python基础学习代码之序列

str1 = 'abced' for i in range(-1, -len(str1), -1) + [None]:     print str1[:i] s, t = 'abc', 'def' print zip(s, t) for i, t in enumerate(str1):     print i, t print isinstance('foo', str) import string def checkid():     alphas = string.letters + '_'

Python基础学习代码之映像集合

def func1():     dict1 = {}     dict2 = {'name':'earth','port':80}     return dict1,dict2 def func2():     return dict((['x',1],['y',2])) def func3():     adict = {}.fromkeys(['x','y'],23)     return adict def func4():     alist = {'name':'earth','po

Python基础学习代码之条件和循环

def func1():     alist = ['Cathy','Terry','Joe','Health','Lucy']     for i in  range(-1,-len(alist)-1,-1):         print i,alist[i] def func2():     alist = ['Cathy','Terry','Joe','Health','Lucy']     for i,name in enumerate(alist):         print '%d