美文网首页
python中的*args和**kw

python中的*args和**kw

作者: 大乔是个美少女 | 来源:发表于2018-05-15 17:36 被阅读0次

python中的args和kw:
*args:表示就是将实参中按照位置传值,多余的值都给args,且以
元组的方式呈现
**kw:表示就是形参中按照关键字传值,多余的值都给kw,且以
字典*的方式呈现

def foo(x,*args,**kwargs):
    print(x)
    print(args)
    print(kwargs)
foo(1,2,3,4,y=1,a=2,b=3,c=4)#将1传给了x,将2,3,4以元组方式传给了args,y=1,a=2,b=3,c=4以字典的方式给了kwargs

lambda表达式:
python中的匿名函数,lambda x: x*x

@decorator装饰器:
定义一个函数,可以在运行中动态增加功能又不改动函数本身

@new_fun
def f(x):
    return x*2

def f(x):
    return x*2
f1 = new_fn(f)

python闭包:

def count():
    fs = []
    for i in range(1, 4):
        f():
            return i * i
        fs.append(f)
    return fs
f1, f2, f3 = count()

fs数组中存储的是三个指向f函数的函数指针,i变量的值在for循环结束后已经赋值为3,所以f1,f2,f3的结果都是9。

def count():
    fs=[]
    for i in range(1,4):
        f(i):
            g():
                return i * i
            return g
        r = f(i)
        fs.append(r)
       return fs
f1, f2, f3 = count()

fs当前数组中存储的函数指针把for循环i变量的值作为fs内函数指针的参数

import time

def performance(f):
    def fn(*args, **kw):
        t1 = time.time()
        r = f(*args, **kw)
        t2 = time.time()
        print 'call %s() in %fs' % (f.__name__, (t2-t1))
        return r
    return fn

@performance
def factorial(n):
    return reduce(lambda x,y: x*y, range(1, n+1))

print factorial(10)

相关文章

网友评论

      本文标题:python中的*args和**kw

      本文链接:https://www.haomeiwen.com/subject/ludydftx.html