第一个案例:
# 求任意数的和
# 可以通过return 来指定函数的返回值
def fn(*nums):
# 定义一个变量来保存结果
result = 0
# 遍历元组 并将元组中的元素累加
for n in nums:
result += n
# print(result)
return result
r = fn(1,2,3)
print(r+6)
第二个案例:
def fn():
# return 100
# return [1,2,3]
# return 1+1
def fn2():
print('python')
return fn2
r = fn()
r()
print(r)
第三个案例:
def fn2():
return
a = 10
r = fn2()
print(r)
第四个案例:
def fn3():
print('hello')
return
print('abc')
r = fn3()
第五个案例:return,break,continue 区别
def fn4():
for i in range(5):
if i == 3:
#break # 用来退出当前循环
# continue # 用来跳过当次循环
return # 用来结束函数
print(i)
print('循环结束')
fn4()
由结果我们看出:
第六个案例:fn 和 fn() 的 区别
def fn():
return 10
print(fn)
print(fn())
执行结果分别是: <function fn at 0x0000016C54C51268> 10
help(print)
def fn(a:int,b:str,c:bool) -> int:
'''
函数的参数
:param a: 作用 ....
:param b: 作用 ....
:param c: 作用 ....
:return: int
'''
return 10
help(fn)
作用域指的是变量生效的区域
示例代码:
a = 20
b = 20
def fn():
a = 10 #a定义在函数内部,所以它的作用域就是函数内部,函数外部是无法访问的
print('函数内部:','a =',a)
print('函数内部:', 'b =', b)
fn()
# print('函数外部:','a =',a)
print('函数内部:','b =',b)
a = 20
def fn2():
# 如果希望在函数内部修改全局变量,则需要使用global关键字,来声明变量
global a # 声明在函数内部的使用a是全局变量,此时在去修改a时,就是修改全局变量
a = 10
print('函数内部:','a =',a)
fn2()
print('函数外部:','a =',a)
命名空间实际上就是一个字典,是一个专门用来存储变量的字典
a = 1
b = 2
c = 3
s = locals() # 获取当前的命名空间
print(s)
print(a)
print(s['a']) # 就是s中一个一个的键值对
s['c'] = 200 #增加一个c的变量
print(s)
def fn4():
a = 10
s = locals() #在函数内部调用locals()会获取函数的命名空间
s['b'] = 20 # 可以通过s来操作函数的命名空间,但是不建议这么做
print(s['b'])
print(s)
fn4()
一般不建议用这种方法来定义和操作变量
递归式的函数 递归简单理解就是自己去调用自己 递归式函数就是在函数中调用自己
递归式解决问题的一种方式 递归式函数的两个条件 1.基线条件 问题可以被分解成最小的问题,当满足基线条件时,递归不在执行了 2.递归条件 将问题继续分解的条件 看个例子:
def fn2(n):
# 基线条件
if n == 1:
# 1的阶乘是它本身
return 1
# 递归条件
return n * fn2(n-1)
print(fn2(10))
def fn4(n,i):
# 定义了一个函数 其中有2个参数 n 要做幂运算的数字 i 做幂运算的次数
# 基线条件 幂为1
if i == 1:
return n
# 递归条件 2*2*2*2 = 16 2**4 2**3 2 ** 2
return n * fn4(n,i-1)
print(fn4(2,4))
# 回文字符串 字符串从后往前念和从前往后念是一样的 abcba
# abcdefgfedcba
# 先检查第一个字符和最后一个字符是否一致,如果不一致不是回文字符串
# 如果一致,则看剩余部分是否是回文字符串
# 检查bcdefgfedcb 是不是回文
# 检查cdefgfedc 是不是回文
# 检查defgfed 是不是回文
# 检查 efgfe是不是回文
# 检查 fgf 是不是回文
# 检查 g 是不是回文
def fn5(s):
# 这个函数就是检查任意一个字符串是否是回文
# 参数s 就是我们要检查的字符串
# 基线条件
if len(s) < 2:
# 字符串的长度小于2 则这个字符串一定是回文
return True
elif s[0] != s[-1]:
# 第一个字符和最后一个字符不相等,不是回文
return False
# 递归条件
return fn5(s[1:-1])
print(fn5('abcdefgfedcba'))
特点: 1.接收一个或多个函数作为参数 2.将函数作为返回值返回 满足任意一个特点就是高级函数
def fn(func,lst):
for n in lst:
if func(n):
new_list.append(n)
# 返回新的列表
return new_list
print(fn(fn4,l))
当我们使用一个函数作为参数时,实际上是将指定的代码传递进了目标函数,根据传入的不同的函数,就改变了实现的规则。