高阶函数:
高阶函数时至少满足下列条件的函数:
接受一个或多个函数作为输出
输出一个函数
在这里插入代码片def add(x,y,f):
return f(x) + f(y)
res = add(3,-6,abs)
print(res)
###################
def foo():
x=3
def bar():
return x
return bar
在这里插入代码片def f(n):
return n*n
def foo(a,b,func):
func(a)+func(b)
ret=func(a)+func(b)
return ret
foo(1,2,f,)
print(foo(1,2,f))
def f():
print('ok')
fpp=f
def bar(a,b,func):
func()
return 1
bar(1,2,f)
def foo2():
x=5
return x
print(foo2())
def foo3():
def inner():
return 8
return inner
ret=foo3()
print(ret)
print(ret())
1 函数名可以进行赋值
2 函数名可以作为函数参数,还可以作为函数的返回值。
函数的返回值:
要想获取函数的执行结果,就可以用return语句把结果返回
注意:
1.函数在执行过程中只要遇到return语句就会停止执行并返回结果,so
也可以理解为return语句代表着函数的结束
2.如果未在函数中指定return,那这个函数的返回值为none
3.return多个对象,解释器会把这多个对象组装成一个元组作为一个一个整体结束输出。
在这里插入代码片def f():
print('ok')
return 10
返回什么内容,给谁呢?
a=f()
print(a)
print(f())
def add(*arge):
print(args):
Sum=0
for i in args # args=(1,2,3,4,5)
Sum+=1
print(Sum)
return Sum
a=add(1,4)
print(a)
def foo():
return 1,'123',[1,2,3]
print(foo())# (1,'123',8)
# 注意点:1.函数里如果没有return,会默认返回一个None
# 2.如果return多个对象,那么python会帮我们把多个对象封装成一个元组返回
作用域
作用域的介绍:
python中的作用域分4种情况:
L: local,局域作用域,即函数中定义的变量;
E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
G:globa,全局变量,就是模块级别定义的变量;
B:built-in,系统固定模块里的变量,比如int,bytearray等。搜索变量
的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python
内置作用域,也就是LEGB。
在这里插入代码片x = int(2.9) # int built-in
g_count = 0 # globaldef outer(): o_count = 1 # enclosing
def inner():
i_count = 2 # local print(o_count) # print(i_count) 找不到
inner()
outer()
#print(o_count) #找不到