函数与高阶函数.avi

个人认为,函数的优点在于复用性,于多次调用时会显得极其简易,压缩代码整洁思路

我对于函数的概念,仍旧停留在学习Java时残留的记忆里,觉得仅仅调用一次时创建函数实在是蠢爆了

然而Python3中,函数的动态参数及默认参数确实是较为简便的,运用得当会省略大量的代码

于Python3中,定义函数应以 def 定义/申明,我个人比较喜欢定义一词。

def  函数名 (参数/也可空):

调用函数则需选择函数名()其中的函数名是函数的内存地址,而()是调用的关键

函数名()

def inner():    #定义名为inner的函数
    print(666)  #这个函数作用即打印666
inner()      #调用函数 inner inner为函数内存地址,()表调用

我们将函数()中的称之为形参,具体叫什么忘了,但大家都说它是形参emmm

同上,调用函数时函数的()内的称之为实参,带*或**的为动态参数,可接受复数的值,*返回值为元组形式,**返回值为字典形式(相对应的,被赋予的值也应是键值对形式的)

形参是由自己定义的参数,仅在函数体内部生效,与实参相互照应,于此处也有*与**方法,均为打散,其中**会将字典打散为键值对,*打散为键

def wrapper(a):   #这里的a便是形参,随意定义的
    a+=1      #函数体

wrapper(6)     #实参,向形参赋予的数据

有趣的三元运算符 与 return

简化 if else判断,适用范围有限是其的缺陷,能也仅能简化 if else 

而 return 于函数中相当于程序中的 quit()方法,其存在便是为了结束函数,并返回内容,无添加下默认返回None

def function(*args):
    return args[0] if args[0]<args[-1] else args[-1]
print(function(7,8))
global
global是函数中的一个关键字,其作用便是 当函数中使用却找不到某一元素时,对函数外的全局部分搜索该元素并调用,无结果时会生成,但如若生成后未能为其赋值,就直接参与运算,则会报错,当已有元素时也会报错
nonlocal
同上nonlocal也是函数关键字,会在局部(函数体)空间内逐层寻找元素,未能找到会报错,当已有元素时也会报错
a = 1
def wrapper():
 
    def inner():
        global a
        a += 1
        print(a)

    inner()
wrapper()


def wrapper():
    a = 1
    def inner():
        nonlocal a
        a += 1
        print(a)
    inner()
wrapper()

三元运算符

仅能简化表述 if: else:

例:sex= '男' if name=='神秘海螺'  else: '女'

 匿名函数

关键字lambda定义的,不需要命名的,匿名函数限制仅一行内容,无法表述过于复杂的逻辑

高阶函数


定义上,以某一函数(包含匿名函数)为参数的函数即为高阶函数,高阶函数内内置了for循环,省去一步for循环的同时也大大限制了逻辑表达

个人表示大多数情况下,完全可以用推导式取代高阶函数

推导式

而关于推导式,用来查看一个包/类/数据类型的具体操作方法

                          [x for x in dir(str) if not x.startswith('_')]

                          就是一个推导式,其中x为返回结果,之后为逻辑语句

原文地址:https://www.cnblogs.com/lttlpp61007188/p/10533284.html