Python---基本知识17之函数2

偏函数:就是针对原函数参数值得改变使得原函数偏爱于新的值;如下面代码所示,首先导入functools包,使用的是functools的partial,第一个参数是需要改变的函数,第二个参数是需要改变的偏爱的值;

import functools

    def sum(a,b,c,d=2):

    print(a+b+c+d)

pertical=functools.partial(sum,d=5)

pertical(1,2,3)

偏函数使用举例:

import functools

x='10011'

int_2=functools.partial(int,base=2)

print(int_2(x))

高阶函数:当A函数的一个参数接收是一个函数时,那么称A为高阶函数;比如sorted()函数,这里需要注意几点,key是一个参数,getkey是一个函数,这里是把函数赋给了key这个参数;

dic=[{'a':17,'n':"xt3"},{'a':15,'n':'xt1'},{'a':19,'n':'xt4'},{'a':14,'n':'xt2'}]

def getkey(d):

    return d['a']

list=sorted(dic,key=getkey)

print(list)

高阶函数使用举例:如下所示,high函数就是一个高阶函数,他的一个参数接收就是一个函数,我们在high函数里面又调用了接收的这个函数;

def sum(x,y):

    return x+y

def subtraction(x,y):

    return x-y

def high(x,y,function):

    return function(x,y)

result=high(1,2,subtraction)

print(result)

返回函数:如果A函数的返回值是一个函数,那么A就叫做返回函数

def return_function(tag):

    def sum(x,y):

        return x+y

    def subtraction(x,y):

        return x-y 

if tag=="+":

    return sum

else:

    return subtraction

func=return_function('+')

res=func(1,2)

print(res)

匿名函数:也叫lambda函数,这个函数其实就是对函数的简化操作,我们只需要关注函数的参数,以及返回值,其他一概不关心:如下代码所示,前面一个关键字lambda,后面直接跟参数,然后一个冒号,最后的x+y就是返回值;

func=lambda x,y:x+y

print(func(1,2))

lambda函数应用举例:下面的代码就是之前使用sorted函数对列表的排序,里面有个key参数是用来接收函数的,但是这个函数其实只是需要在这里使用一次,其他地方都不使用,那我们使用lambda函数就简单很多了,就不用在外面再去写一个函数了;

dic=[{'a':17,'n':"xt3"},{'a':15,'n':'xt1'},{'a':19,'n':'xt4'},{'a':14,'n':'xt2'}]

list=sorted(dic,key=lambda x:x['a'])

print(list)

闭包:指的是在函数嵌套的情况下,内层函数调用了外层函数的变量(包括参数),并且把内层函数当成返回值,那么这种情况就叫做闭包;

def out():

    ot=2

    def inner():

        print(ot)

    return inner

newFunc=out()

newFunc()

闭包的使用举例:首先申明一点,其实我们不管学习什么方式来操作代码都是为了让代码能更优雅,更方便,更好用,学这么多东西,最后需要自己去抉择到底使用什么方式去写;这个例子就是打印分隔线的例子:首先不可否认的是我们直接写一个函数也可以,但是如果这样写的话,每次去调用分隔线都需要传参,同样的参数要写多次,像我这样写的话,同样的参数只需要写一次,是不是更优雅呢,个中体会;

def config_line(content,leng):

def line():

print('*'*(leng//2)+content+'*'*(leng//2))

return line

line1=config_line('我是分隔线',14)

line1()

lin2=config_line('第90页',80)

lin2()

闭包注意事项:

1.如果内层函数要改外层函数的变量的值,那么需要加一个关键字nonlocal修饰这个变量:表示这个变量不是一个局部变量;

nonlocal leng

2.还需要注意一点是如果外层参数的值在发生变化的话,一定要理清楚内层的逻辑是怎么走的,不然会出现各种错误;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容