python学习笔记(1)

1.匿名函数

      常规函数写法:

def func():
    return True

   但是对于map这类方法参数为一个方法的,就可以使用匿名函数,而不用重新定义一个

func = lambda x: True
print(func())    # True

2.函数名字

    对于方法而言,有一个名为__name__的内置属性,这个属性返回的是该方法的名字

def func():
    return True
print(func.__name__)    # func

3.装饰器

    类似js里面的切片式编程,作用是在已经定义好的方法之前执行某些操作

def log(func):
    def wrapper(*args, **kw):
        print("this func is:", func.__name__)
        return func(*args, **kw)
    return wrapper

@log
def now():
    print("2018/11/12")

now()    #  this func is:now    
    2018/11/12

 4.偏函数

    对于部分参数较多的方法而言,可能需要通过二次封装来减少一些参数

def say(name, sentence):
    print(name, ":", sentence)

say("lilei", "hello")    #  lilei : hello
say("hanmeimei", "hello")    # hanmeimei : hello

say2 = lamdba name, sentence = "hello": say(name, sentence)
say2("lilei")    # lilei : hello
say2("hanmeimei", "world")    # hanmeimei : world

    但是,在参数过多的时候,就很麻烦了,需要把参数都处理一遍,functools提供了偏函数的方法,可以直接指定某个参数的默认值

import functools
say3 = functools.partial(say, sentence = "hello")
say3("lilei")    #  lilei : hello
say3("lilei", sentence = "world")    # lilei : world
say3("lilei", "world")    #  TypeError: say() got multiple values for argument 'sentence'

所以在需要重新赋值的时候,需要指定参数名

原文地址:https://www.cnblogs.com/timmer/p/9946534.html