一、函数的返回值
- 返回值就是函数执行以后返回的结果
- 通过return来指定函数的返回值
- return后面可以跟任意对象,返回值甚至可以是一个函数
def fun1(x,y):
print(x+y)
return
result=fun1(1,6)
print(result)
print(type(result))

二、文档字符串
- help()是Python中内置函数,通过help()函数可以查询Python中函数的用法
- 在定义函数时,可以在函数内部编写文档字符串,文档字符串就是对函数的说明
def demo(a,b,c):
'''
:param a:
:param b:
:param c:
:return:
'''
help(demo)

三、函数的作用域
- L(Local):最内层,包含局部变量,比如一个函数/方法内部。
- E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 - B 中的名称来说 A 中的作用域就为 nonlocal。
- G(Global):当前脚本的最外层,比如当前模块的全局变量。
- B(Built-in): 包含了内建的变量/关键字等。,最后被搜索
total1=0
def fun(a,b):
total2=a+b
print('函数内部的total1是',total2)
return total2
fun(1,2)
print('函数外部的total1是',total1)

四、命名空间
- 内置名称(built-in names), Python 语言内置的名称,比如函数名 abs、char 和异常名称 BaseException、Exception 等等。
- 全局名称(global names),模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。
- 局部名称(local names),函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量。(类中定义的也是)
namespace=locals()
print(namespace,type(namespace))

五、递归函数&匿名函数
5.1 递归函数
- 递归是解决问题的一种方式,它的整体思想,是将一个大问题分解为一个个的小问题,直到问题无法分解时,在去解决问题
基线条件 问题可以被分解为最小问题,当满足基线条件时,递归就不执行了
递归条件 可以将问题继续分解的条件
def fib(n):
a,b=0,1
for i in range(n):
a,b=b,a+b
print(a)
fib(10)

5.2 匿名函数
- Python使用lambda关键字创造匿名函数。所谓匿名,意即不再使用def语句这样标准的形式定义一个函数。这种语句的目的是由于性能的原因,在调用时绕过函数的栈分配。其语法是:
lambda [arg1[, arg2, … argN]]: expression
其中,参数是可选的,如果使用参数的话,参数通常也会在表达式之中出现。
true=lambda:True
print(true)
true()
a = lambda x, y: x + y
print(a(1,3))
