python基础笔记 10.函数二

函数二

再介绍一下函数的创建

1 函数的返回值

即函数执行后返回的结果

  • 函数return,指定函数的返回值(可以返回任意对象)
def f():
    return '123'
r = f()
print(r) # 函数的返回值
print(f) # 函数对象
print(f()) # 函数的返回值
# 
def f1():
    for i in range(5):
        if i == 3:
            # break # 退出循环语句
            return # 退出函数定义语句
        print(i)
    print('函数定义完毕')
f1()

2 文档字符串

即‘‘‘ ’’’,字符串中的格式不变(在自定义函数内编写文档字符串,作为函数的说明)

  • 函数help,查询函数(sep为打印值之间的插入,默认为空格)
help(print) # 查询函数print
print('www','Github','com',sep='.') # sep为打印值之间的插入,默认为空格
# 自定义函数:
def f(a=int(0),b=int(0),c=int(0))->float:
    '''
    加法函数
    :param a:加数,整数类型,默认为0
    :param b:加数,整数类型,默认为0
    :param c:加数,整数类型,默认为0
    :return: 和,小数类型,默认为None
    '''
    c = a + b + c
    return c
help(f)
n = f(1,2,3)
print(n)

3 函数的作用域

即变量生效的区域scope,分为函数作用域和全局作用域

  • 全局定义域:(用于全局变量)
a = 1
def f():
    print('函数内a=',a)
f()
print('函数外a=',a)
  • 函数作用域:(用于局部变量,全局变量)
def f():
    a = 1
    print('函数内a=',a)
f()
# print('函数外a=',a) # 错误:未在函数外定义a
  • 关键字global(申明为全局变量):
def f():
    global a # 申明a为全局变量
    a = 1
    print('函数内a=',a)
f()
print('函数外a=',a) # 打印:已在全局定义a

4 命名空间

即存储作用域内所有对象的字典(类似指针)

  • 函数locals,获取当前作用域的命名空间并返回字典
    函数globals,获取全局作用域的命名空间并返回字典
a = 1
x = locals() # 获取全局作用域
print(x)
print(x['a'])
##
def f():
    a = 1
    x = locals() # 获取函数作用域
    print(x)
f()
##
a = 1
def f():
    x = globals() # 获取全局作用域
    print(x)
f()

5 递归

  • 递归函数:即函数调用它本身
  • 递归方法:将一个问题逐步分解为若干小问题,直到无法分解为止,再进行求解
  • 两个条件:1.基线条件,问题停止分解的条件;2.递归条件,问题继续分解的条件
  • 无穷递归(死循环):
def f():
    f()
  • 求任意数的阶乘:
def f(n):
    if n == 1: # 基线条件(当n=1时)
        return 1
    return n*f(n-1) # 递归条件(当n!=1时)
print(f(10))
  • 求任意数的任意次幂:
def f(m,n):
    if n == 1:
        return m
    return m*f(m,n-1)
print(f(10,5))
  • 判断回文字符串(如abcba):
def f(a):
    if len(a) < 2: # 基线条件(字符串中只有一个元素)
        return True
    elif a[0] != a[-1]: # 基线条件(字符串头尾不等)
        return False
    return f(a[1:-1]) # 递归条件(字符串头尾做切片)
print(f('abccba'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值