用python画枫叶-python-函数及练习

一、函数的返回值

可以通过人return 来指定函数的返回值

用一个变量来接收返回值

return 后面跟什么值,函数就会返回什么值

# 在函数中return后的代码都不会被执行,return一旦执行,函数自定结束

例如: print('jaaj')

return '3'

print('123')

print(fn) # fn是函数对象,打印fn 就是在打印函数对象,

print(fn()) # fn() 是在调用函数,打印fn() 实际上就是在打印fn()的返回值

二、函数的作用域(scope): 作用域指的是变量生效的区域

scope = locals() # 要获取函数内部的命名空间

# globals() # 这个函数可以在任意位置获全局的取命名空间

递归函数-- - -- - - - - - - - - - - -- - - -

递归:自己去引用自己

递归函数就是在函数中调用自己

递归是解决问题的一种方式

整体思想就是将一个大问题分解为一个一个的小问题,直到问题无法分解时在去解决问题

# 递归函数的两个条件

1.基线条件 问题可以被分解为最小的问题,当满足基线条件时,递归就不在执行了

2.递归条件 将问题继续分解的条件

3.用递归方法求阶乘:

def fn2(n):

# 参数n 要求阶乘的数字

# 基线条件 判断n为1的时候,就不递归了

if n == 1:

return 1

# 递归条件

return n * fn2(n-1)

print(fn2(10))

4.定义一个函数,来为任意数字做任意幂运算

def fn1(n,i):

# 基线条件

if i == 1:

return n

# 递归条件

return n * fn1(n,i-1)

print(fn1(5,8))

5.先检查最后一个字符和第一个字符是否相等,如果不是,一定不是回文

def fn2(s):

# 参数s 要检查的字符串

# 基线条件

if len(s) < 2:

# 字符串的长度小于2,一定是回文

return True

elif s[0] != s[-1]:

# 不是回文

return False

# 递归条件

return fn2(s[1:-1])

print(fn2('abcdefedcba'))

你可能感兴趣的:(用python画枫叶-python-函数及练习)