函数的返回值
return 后面接任意对象
执行到return时该函数结束
文档字符串
def fun(a, b):
'''
:param a:
:param b:
:return:
'''
pass
函数的作用域
- 全局作用域
a = 1
b = 2
def fun():
print(a)
print(b)
fun()
- 局部作用域
def fun():
a = 1
b = 2
print(a)
print(b)
fun()
def fun():
# 申明此处的变量是全局变量
global a, b
a = 1
b = 2
print(a)
print(b)
def fun1():
print(a)
print(b)
fun1()
fun()
print(a)
print(b)
命名空间
a = 1
b = 2
c = 3
space = locals()
print(space)
打印结果
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000027941344790>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'H:\\pythonProject\\作业8.py', '__cached__': None, 'a': 1, 'b': 2, 'c': 3, 'space': {...}}
是一个字典,可以插入
space['abc'] = 123
递归函数
递归2个条件
- 基线条件
- 递归条件
# 任意阶乘
def fun(n):
if n == 1:
return 1
return n*fun(n-1)
print(fun(10))
# 10的阶乘 结果3628800
# 任意数的任意次幂
def fun(m, n):
if n == 1:
return m
return m * fun(m, n - 1)
print(fun(2, 3))
# 打印结果8
# 判断回文字符串
def fun(s):
if len(s) < 2:
return True
elif s[0] != s[-1]:
return False
return fun(s[1:-1])
print(fun('adsdfwds'))
打印结果 False
作业
- 用函数实现一个判断用户输入的年份是否是闰年的程序
def year(a):
if a % 400 == 0:
return '{}年是闰年'.format(a)
elif (a % 4 == 0) and (a % 100 != 0):
return '{}年是闰年'.format(a)
return '{}年不是闰年'.format(a)
a = int(input('请输入一个年份'))
print(year(a))
运行结果
请输入一个年份2301
2301年不是闰年
请输入一个年份4000
4000年是闰年
- 猴子吃桃问题(递归):
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了,求第一天共摘了多少桃子?
# 定义一个递归函数m是摘桃子数,n是天数
# 第一天s个
# 第二天s/2 -1个
def fun(n):
# 基线条件.第10天只有1个
if n == 10:
return 1
return (fun(n + 1) + 1) * 2
print(fun(1))
打印结果
1534