函数返回值
返回值就是函数执⾏以后返回的结果 通过return来指定函数的返回值 return后⾯可以跟任意对象,返回值甚⾄可以是⼀个函数
def fun(*args):
r=0
for i in args:
r+=i
print(r)
return r #return 后面跟的值作为返回值返回出去,return后面的代码不再执行
print(fun(1,2,2,3,4,5,6,3))
#函数的调用可以让函数运行起来
#函数调用可以传递实参
#函数调用可以接受函数的返回值
def fun2():
for i in range(5):
if i==3:
return #如果后面不跟任何东西, 返回值就是None
print(i)
fun2()
总结:
fun() 是函数的调用 打印fun() 打印出来的结果是函数的返回值
⽂档字符串
help()是Python中内置函数,通过help()函数可以查询Python中函数的⽤法 在定义函数时,可以在函数内部编写⽂档字符串,⽂档字符串就是对函数的说明- ```
def fun(a, b):
"""
文档字符串
:param a:
:param b:
:return:
"""
pass
print()
help(print)
函数的作⽤域
作⽤域(scope) 作⽤域指的是变量⽣效的区域 在Python中⼀共有两种作⽤域
在全局作⽤域中定义的变量,都是全局变量,全局变量可以在程序的任意
a=1
b=2 #顶格写的 就是全局作用域,可以在函数
def fun():
global a,b. #声明全局变量
a=123
b=234
print(a)
print(b)
def fun1():
print(a)
print(b)
fun1()
fun()
print(a)
print(b)
在函数作⽤域中定义的变量,都是局部变量,它只能在函数内部被访问
命名空间
命名空间实际上就是⼀个字典,是⼀个专⻔⽤来存储变量的字典 locals()⽤来获取当前作⽤域的命名空间 如果在全局作⽤域中调⽤locals()则获取全局命名空间,如果在函数作⽤域中调⽤locals()则获取函数命名空间 返回值是⼀个字典
递归函数
递归是解决问题的⼀种⽅式,它的整体思想,是将⼀个⼤问题分解为⼀个个的⼩问题,直到问题⽆法分解时,再去解决问题 递归式函数有2个条件
基线条件 问题可以被分解为最⼩问题,当满⾜基线条件时,递归就不执⾏了
#10 的阶乘
def fun():
b=1
for i in range(1,11):
b*=i
#print(b)
return b
print(fun())
def fun1(n):
if n==1:
return 1
return n*fun1(n-1)
print(fun1(10))
#m的n次幂
def fun3(m,n):
if n==1:
return m
return m*fun3(m,n-1)
print(fun3(3,3))
#检测一个字符是不是回文字符串
#例如:1234567654321
#asdfghjkjhgfdsa
def fun(s):
if len(s) < 2:
return True
elif s[0] != s[-1]:
return False
return fun(s[1:-1]) #去头去尾
print(fun('asdfghjkjhgfdsa'))
作业
⽤函数实现⼀个判断⽤户输⼊的年份是否是闰年的程序
1.能被400整除的年份 2.能被4整除,但是不能被100整除的年份 以上2种⽅法满⾜⼀种即为闰年
def year(m):
if int(m)%400 ==0 or int(m)%4==0 and int(m)%4!=0:
print('{}是闰年'.format(m))
else:
print('{}不是闰年'.format(m))
year(input('请输入年份:'))
猴⼦吃桃问题(递归):
猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不瘾,⼜多吃了⼀个。第⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。以后每天早上都吃了前⼀天剩的⼀半零⼀个。到第10天早上想再吃时,⻅只剩下⼀个桃⼦了,求第⼀天共摘了多少桃⼦?
#假设桃子一共有n个
#第一天有 n
#第二天有 (n-1)/2+1
#···········
#第九天 有 1
def peacch(n):
if n==1:
return 1
else:
return ((peacch(n-1)+1)*2)
print(peacch(10))
#第十天 只有1个
第九天 有 (1+1)*2 上一天+1*2 第一次
第八天有 ((1+1)*2)*2 上一天+1*2 第二次
····
第一天有 上一天+1*2 第九次
peacch=1
for i in range(9):
peacch=(peacch+1)*2
print('桃子有{}'.format(peacch))
def peach(n):
if n==10: #第十天只有一个桃子,返回值所以是1
return 1
else:
return ((peach(n+1)+1)*2) #这里的参数其实就是第几天,返回值是有几个桃子
print(peach(1))