1、函数的返回值
- 返回值就是函数执⾏以后返回的结果
- 通过return来指定函数的返回值
- return后⾯可以跟任意对象,返回值甚⾄可以是⼀个函数
2、文档字符串
- help()是Python中内置函数,通过help()函数可以查询Python中函数的⽤法
- 在定义函数时,可以在函数内部编写⽂档字符串,⽂档字符串就是对函数的说明
3、函数的作用域
- 作⽤域(scope)
- 作⽤域指的是变量⽣效的区域
- 在Python中⼀共有两种作⽤域
—— 全局作⽤域
1、全局作⽤域在程序执⾏时创建,在程序执⾏结束时销毁
2、 所有函数以外的区域都是全局作⽤域
3、 在全局作⽤域中定义的变量,都是全局变量,全局变量可以在程序的任意位置进⾏访问
—— 函数作⽤域
1、函数作⽤域在函数调⽤时创建,在调⽤结束时销毁
2、函数每调⽤⼀次就会产⽣⼀个新的函数作⽤域
3、在函数作⽤域中定义的变量,都是局部变量,它只能在函数内部被访问
4、命名空间
- 命名空间实际上就是⼀个字典,是⼀个专⻔⽤来存储变量的字典
- locals()⽤来获取当前作⽤域的命名空间
- 如果在全局作⽤域中调⽤locals()则获取全局命名空间,如果在函数作⽤域中调⽤locals()则获取函数命名空间
- 返回值是⼀个字典
5、递归函数
- 递归是解决问题的⼀种⽅式,它的整体思想,是将⼀个⼤问题分解为⼀个个的⼩问题,直到问题⽆法分解时,在去解决问题
- 递归式函数有2个条件
—— 1. 基线条件 问题可以被分解为最⼩问题,当满⾜基线条件时,递归就不执⾏了
—— 2. 递归条件 可以将问题继续分解的条件
课后作业
作业一:
# 1. ⽤函数实现⼀个判断⽤户输⼊的年份是否是闰年的程序
# 1.能被400整除的年份
# 2.能被4整除,但是不能被100整除的年份
# 以上2种⽅法满⾜⼀种即为闰年
def fun():
while True:
r = int(input('请输入年份:'))
if r % 400 == 0:
print('闰年:{}'.format(r))
break
elif r % 4 == 0 and r % 100 != 0:
print('闰年:{}'.format(r))
break
else:
print('您输入的{}年不是闰年!'.format(r))
continue
fun()
结果如下:
作业二:
# 2. 猴⼦吃桃问题(递归):
# 猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不瘾,⼜多吃了⼀个。第
# ⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。以后每天早上都吃了前
# ⼀天剩的⼀半零⼀个。到第10天早上想再吃时,⻅只剩下⼀个桃⼦了,求第
# ⼀天共摘了多少桃⼦?
def monkey_tao(n):
if n > 10 or n < 1:
return
elif n == 10:
return 1
else:
return (monkey_tao(n + 1) + 1) * 2
print(monkey_tao(1))
结果如下: