文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python 函数(二)

2023-01-30 23:33

关注

一、高阶函数

 1、函数名可以赋值
2、函数名可以作为函数参数
3、函数名可以作为函数的返回值
eg:
def f1(n):
    return n*n

def f2(a, b, f):
    return f(a) + f(b)   # 此处f() 相当于 f1()

num = f2(1, 2, f1)
print(num)

>>> 5

二、递归函数

 1.自己调用自己;
 2.有一个结束条件;

eg1: 递归求5!

def fat(n):
    if n == 1:
        return 1
    return n*fat(n-1)

print(fat(5))

>>> 120

eg2: 递归求斐波那契数列(输入位数,输出该位置所对应的值)

斐波那契数列:  0  1  1  2  3  5  8  13  21  34  55(从0、1开始,后面的任意一个数为她前面两个数的和)
def fibo(n):
    if n <= 1:
        return 1
    return fibo(n-1) + fibo(n-2)


print(fibo(8))     # 输出斐波那契数列的第8个数(是从0开始计数的)

>>> 21

三、内置函数

1.all() 函数

all()  # 如果括号里面的内容为真,返回True,否则返回False

2.eval() 函数 

eval()     # 相当于一个计算器,在括号里面直接输入要计算的内容

3.filter() 函数,   相当于过滤器,不符合条件的过滤掉,返回的值是过滤后的内容

eg:
st = ['a', 'b', 'c', 'd']

def fun(a):
    if a != 'a':   # 筛选条件
        return a

ret = filter(fun, st)
print(list(ret))

>>> ['b', 'c', 'd']

4.map()   字符串处理

st = ['c', 'd']

def fun(a):
    return a + "xss"  # 给列表中的每个元素后面加上‘xss’ 然后输出

ret = map(fun, st)

print(ret) # map  object的迭代器, 输出的是存放该函数的地址
print(list(ret))

>>>   <map object at 0x000001E7903B40B8>
          ['cxss', 'dxss']

5.reduce()函数    叠加器

from functools import reduce    # 使用reduce() 要加上该调用语句

def add(x, y):
    return x + y

print(reduce(add, range(1, 10)))   # 输出1-9相加的和
# 执行机制:取出range中的前两个数1和2分别赋值给x和y,执行adda()函数后把结果放入range中(此时range中数变为3 3 4 5 6 7 8 9),以此类推

6.lambda()   匿名函数

from functools import reduce      # 使用reduce() 的调用语句
print(reduce(lambda x, y: x*y, range(1, 7)))       # 计算6!
# 执行机制:取出range中的前两个数1和2分别赋值给x和y,然后相乘,结果放入range中(此时range中数变为2 3 4 5 6),以此类推

四、关键字 global 和 nonlocal (不多解释,直接上例子)

eg1:

count = 10

def f():
   global count  # 声明count是一个全局变量
    print(count)
    # 如果前面不用global声明,函数报错->UnboundLocalError: local variable 'count' referenced before assignment
    # 原因:count变量在定义之前调用,既全局变量不能在局部被修改
    count = 5
    print(count)

f()

>>> 10

        5

eg2:

def outer():
    count = 10

    def inner():
        nonlocal count  # 局部变量用nonlocal关键字 声明
         count = 20
        print(count)
    inner()
    print(count)

outer()

>>> 20

        20

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯