函数(二)
1.函数的返回值
- 定义:函数的返回值就是函数执行后返回的结果
- return 后面可以跟任何对象
return 123
return 'abc'
return [456]
return {'a':123}
2.文档字符串
- help()内置函数,可以查询python中函数的用法
- 语法:help(函数对象)
# help(print)
3.函数的作用域
- 作用域(scope),在python中一共有两种作用域,一个为全局作用域,另一个为函数作用域
- 全局作用域
1.是在程序执行时创建,在执行结束时销毁
2.所有函数以外的区域都是全局作用域
3.在全局作用域中定义的变量称为全局变量,可以在程序的任意位置进行访问 - 函数作用域
1.函数作用域在函数调用时创建,调用结束时销毁
2.每调用一次都会产生一个新的函数作用域
3.函数作用域中定义的变量,都是局部变量,只能在函数内部被访问
b = 20
def fn():
a = 123
print('函数内部: a =',a)
print('函数内部: b =', b)
fn()
print('函数外部: b =', b) #b为全局变量 可以在任何地方访问
- 对全局变量进行修改,若在函数内部进行修改,需要使用global关键字,用来声明该变量
a = 456
def fn():
global a
a = 123
print('函数内部a =',a)
fn()
print('函数外部a =', a)
4.命名空间
- 命名空间是一个字典,专门用来保存变量
- locals( )用来获取当前作用域的命名空间,并返回一个字典
a = 123
b = 456
scope = locals()
scope['c'] = 789 #向scope中添加一个key-value
print(scope)
5.递归函数
- 递归函数就是在函数中自己调用自己,整体思想是把一个大的问题分解成一个小的问题,直到问题无法再分解,再去解决问题
- 递归函数的两个条件:
1.基线条件,问题可以分解为最小的问题,当满足基线条件时,递归就不再执行了
2.递归条件,将问题继续分解的条件
# 用递归的思想解决任意数的阶乘问题
def fn(n):
if n == 1:
return 1
return n * fn2(n-1)
print(fn(10))