python中的*args和**kw

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,219评论 1 118
  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 5,498评论 0 6
  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 19,198评论 17 410
  • 【每日一歌】 等一场雪 【每日一读】 1、只有一种生活值得过,那就是过你想过的生活...
    采蘑菇的小Timor阅读 1,079评论 0 0
  • 日出东方一点红,朝阳万丈照红尘。昨晚星辰今朝撒,今日又有好兆头。晨风吹帘轻飘飘,早鸟窗前语袅袅。懒在床上自打滾,又...
    甘朝武阅读 1,332评论 0 0