函数二
1、函数返回值
return:可返回运算结果,并退出函数
break:跳出当前循环
continue:跳过本次循环,进入下一次循环
def fn1():
def fn2():
print("这是fn2")
return fn2
fn1()()
显示结果:这是fn2
总结:这里return返回fn2对象,故fn1调用后,再调用一次,即可显示fn2里面内容
在这里插入代码片
2、文档字符串
文档注释,用三引号表示
help(函数对象) 显示帮助文档
3、函数的作用域
global 全局变量
函数内部的变量可以改变全局变量的值
global置于函数内部
4、命名空间
locals 显示当局变量,以字典形式出现
globals 显示全局的变量,以字典形式出现
def fn(b):
c=2
print(f'locals显示为{locals()}')
print(f'globals显示为{globals()}')
if len(b)==1 or len(b)==0:
return True
elif b[0]==b[-1]:
return fn(b[1:-1])
else:
return False
fn('a')
显示结果为:
locals显示为{'c': 2, 'b': 'a'}
globals显示为{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000018DDF7BB358>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/PycharmProjects/v3/20191018.py', '__cached__': None, 'fn': <function fn at 0x0000018DDF6B1E18>}
结论:显示结果不同,locals显示的是def函数中的变量
globals显示为全局中的变量
5、递归函数
递归式函数有两个条件
1.基线条件
问题可以被分解为最小的问题,当满足基线条件的时候,递归就不在执行了
2.递归条件
将问题可以分解的条件
练习:用来检测任意字符串是否是回文字符串,如果是返回True,如果不是返回False
def fn(b):
if len(b)==1 or len(b)==0:
return True
elif b[0]==b[-1]:
return fn(b[1:-1])
else:
return False
print(fn('abcba'))
显示结果:True