抽象

cooolr 于 2023-01-30 发布

文档化函数

在函数的开头写下字符串,他就会作为函数的一部分进行存储

参数魔法

>>>def hello(name,age):print name,age

位置参数

位置比名字重要
>>>hello('lr',18)

关键字参数

调用函数时提供参数的名字
>>>hello(name='lr',age=18)

收集参数,以元组方式返回

>>>def hello(name,*age):print name,age
>>>hello('lr',18,19,20)
lr.(18,19,20)

收集参数,以字典方式返回

>>>def hello(**names):print names
>>>hello(x=1,y=2,z=3)
{'x':1,'y':2,'z':3}

作用域

作用域又叫命名空间,是一种“不可见字典”,除了全局作用域,每个函数都会创建一个新的作用域,函数内的作用域叫局部变量,全局作用域叫全局变量。

这意味着在函数内部碰到一个变量的时候函数会优先在自己的命名空间里面去寻找。

内置的函数globals返回一个python解析器知道的变量名称的字典 内置的函数locals返回函数内部作用域变量名称的字典

屏蔽引发的问题

在函数内读取全局变量一般来说并不是问题,但是还是有个会出问题的事情。当局部变量或者参数的名称和想访问的全局变量名相同的话,全局变量就被局部变量屏蔽了。

闭包/嵌套函数

>>>def multipliter(factor):
    def multiplyByFactor(number):
        return number*factor
    return multiplyByFactor

递归

递归的概念很简单,如果函数包含了对其自身的调用,该函数就是递归的。

>>>def ac(n):
    if n<=0:return 0
    else:return n+ac(n-1)