美文网首页
Python---基本知识17之函数2

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

作者: hello_我的哥 | 来源:发表于2018-01-24 15:28 被阅读17次

偏函数:就是针对原函数参数值得改变使得原函数偏爱于新的值;如下面代码所示,首先导入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.还需要注意一点是如果外层参数的值在发生变化的话,一定要理清楚内层的逻辑是怎么走的,不然会出现各种错误;

相关文章

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

    偏函数:就是针对原函数参数值得改变使得原函数偏爱于新的值;如下面代码所示,首先导入functools包,使用的是f...

  • Python---基本知识17之函数1

    什么是函数? 函数其实就是把许多代码放在一起,包装好之后的一种形式,使得他可以被多次复用。 函数的简单定义: 如下...

  • python---基本知识20之递归函数&函数作用域

    递归函数其实不是编程里面所定义的函数,而是数学里面的递归,传递的是一种规律,所以叫递归函数; 我们写递归函数,其实...

  • Python---基本知识13之元组

    1.什么是元组? 就是有序列得不可变得集合,这里和列表稍微不一样,列表是有序得可变得集合; 2.元组的定义:元组是...

  • Python---基本知识15之集合

    集合的概念? 无序的,不可随机访问的,不可重复的元素集合,就和数学里面学习的集合差不多; 1.集合的定义:集合分为...

  • Python---基本知识9之循环

    什么是循环? 指的就是重复做某一件事;废话不多说,直接看语法; 首先我们看的是while循环,while循环语法就...

  • Python---基本知识14之字典

    什么是字典? 字典是无序得可变的元素集合; 字典的定义: 1.直接写:从以下代码中我们可以看到字典是由一对大括号组...

  • python---函数参数

    python---函数参数 在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参...

  • Python---基本知识2_之变量

    变量是什么? 答:变即可变,量即数量,意思是可变的数量。那在程序上面是不是也是这样呢?其实大致意思差不多。就是说一...

  • Python---基本知识1_之注释

    什么是注释?为什么要注释? 我们编写的代码需要翻译成电脑认识的语言,即机器语言,那注释呢?注释是写给我们自己看的,...

网友评论

      本文标题:Python---基本知识17之函数2

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