Python函数 2

 ⽂档字符串
       函数的作⽤ 

        域命名空间
              递归函数


⽂档字符串

help()是Python中内置函数,通过help()函数可以查询Python中函数的⽤法
在定义函数时,可以在函数内部编写⽂档字符串,⽂档字符串就是对函数的
说明

案列:

help(print)

结果:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

案例:

def fn(a:int,b:str,c:bool)->int:

    '''
    这个函数的功能就是一个文档字符串在函数中的使用说明

    参数
    a,作用,类型,默认值...
    b,作用,类型,默认值...
    c,作用,类型,默认值...

    返回值
    '''
    return 1

help(fn)

结果:

Help on function fn in module __main__:

fn(a: int, b: str, c: bool) -> int
    这个函数的功能就是一个文档字符串在函数中的使用说明
    
    参数
    a,作用,类型,默认值...
    b,作用,类型,默认值...
    c,作用,类型,默认值...
    
    返回值

 

命名空间

  • 在Python中,所有的名字都存在一个空间中,它们在该空间中存在和被操作——这就是命名空间。它就像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面找到相应的对象。
  • 命名空间实际上就是⼀个字典,是⼀个专⻔⽤来存储变量的字典
  • locals()⽤来获取当前作⽤域的命名空间
  • 如果在全局作⽤域中调⽤locals()则获取全局命名空间,如果在函数作⽤域中 调⽤locals()则获取函数命名空间 返回值是⼀个字典
  • glaobals() 可以调出全局的命名空间

案列:

a = 20
b = 30
c = 100

def fn4():
    a = 50

    scope = locals()
    scope['c'] = 1000
    print(scope)
    print(c)
    g = globals()
    print(g)
fn4()

结果:

{'a': 50, 'c': 1000}
100
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x03C9AF58>, '__spec__': None, '__annotations__'

 

递归函数

  • 递归是解决问题的⼀种⽅式,它的整体思想,是将⼀个⼤问题分解为⼀个个 的⼩问题,直到问题⽆法分解时
  • 通俗来讲就是自己引用自己:从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事,讲的是从前有座山,山里有座庙,庙里有个老和尚在给小和尚讲故事…

条件

  • 在去解决问题 递归式函数有2个条件:
    1. 基线条件 问题可以被分解为最⼩问题,当满⾜基线条件时,递归就不 执⾏了
  •             2.递归条件 可以将问题继续分解的条件

 

递归

求10 的阶乘:

n = 1
for i in range(1, 10):
    n *= i

print(n)

结果:

362880

求任意数阶乘:

def fn(n):
    r = n

    for i in range(1, n):
        # print(i)
        r *= i

    return r


print(fn(10))

结果:

3628800

用递归求任意数阶乘:

# 10! = 10 * 9!
# 9! = 9 * 8!
# ...
# 1! = 1

def fn3(n):

    # 1. 基线条件 判断如果用户让求的数字是1的情况我们就满足基线条件了就不在递归了
    if n == 1:
        # 1的阶乘就是1
        return 1

    # 2. 递归条件  9 * 8!
    return  n * fn3(n-1)

print(fn3(10))

 

结果:

3628800

定义一个函数,用来检查一个任意的字符串是否是回文字符串,如果是返回True,不是返回False。回文字符串从前往后念和从后往前念是一样的。例如 TNT


def fn(s):
    if len(s) <= 2:
        return False

    else:
        a = reversed(list(s))
        if list(a) == list(s):
            return True
        else:
            return False

i=input('请输入一个大于2的字符串:')

print(fn(i))


结果:

请输入一个长度大于2的字符串:12321
True

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值