Python函数下(第九讲)

在这里插入图片描述

1.内置文件中常用方法

1.range()

  • range(start,stop,step) --> range object
  • start:起始值默认为零
  • stop:结束值
  • step:步长
print(list(i for i in range(0,10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 生成0到10的整数

2.zip()

    zip()用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

  • zip(iter[,iter2 […]]) --> zip object
a = ('name', 'age')
b = ('Jeff', 18)
print(tuple(zip(a, b)))
# (('name', 'Jeff'), ('age', 18))

3.map()

    map() 会根据提供的函数对指定序列做映射。

  • map(func,*iterables) --> map object
num = ['1', '2', '3']
nums = map(lambda x:int(x),num)
print(list(nums)) # [1, 2, 3]

4.filter()

    filter() 用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

  • filter(func, iterable) --> filter object
  • func:自定义函数
  • iterable:可迭代对象
def jishu(a):
    return a % 2 == 1
print(list(filter(jishu, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])))
# [1, 3, 5, 7, 9];把奇数过滤出来

练习

  • 实现:返回1-10的奇数列表
def jishu(a):
    return a % 2 == 1
print(list(filter(jishu, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])))
# [1, 3, 5, 7, 9];把奇数过滤出来
  • 实现:阶乘,比如n!=123*…*n
def chengjie(n):
    rse = n
    for i in range(1, n):
        rse *= i
    print(rse)
chengjie(6) # 720

2.匿名函数

1.匿名函数介绍

    当我们在传入函数时,有些时候,不需要重复调用该函数,直接传入匿名函数更方便,也无需担心函数名冲突,并且还可以将匿名函数赋值给一个变量,再利用变量来调用该函数。

  • lambda x:x*x
  • 关键字lambda表示匿名函数
  • 冒号前面的x表示函数参数
  • 冒号后面的表示函数返回值
a = lambda x, y : x*y
print(a(2, 3)) # 6

2.匿名函数应用

  • 匿名函数作返回值
def fx(i, j):
    return lambda: i * j

f = fx(6, 6)
  • 匿名函数作实参
def text(a, b, func):
    res = func(a, b)
    return res

nums = text(11, 22, lambda x, y: x + y)

3.练习

  • 将 lis = [4,-2,3,1] --> [1,-2,3,4]
lis = [4, -2, 3, 1]
# key:指定排序规则,排序完成返回原元素
# abs取绝对值
lis.sort(key=abs)
print(lis)
  • infors = [{‘name’:‘qian’,‘age’:28},{‘name’:‘amy’,‘age’:20},{‘name’:‘james’,‘age’:25}]以name对应的值进行排序
infors = [{
    
    'name': 'qian', 'age': 28}, {
    
    'name': 'amy', 'age': 20}, {
    
    'name': 'james', 'age': 25}]
# key:排序键-->获取每个字典当中的name值
infors.sort(key=lambda x:x['name'])
print(infors)

3.高阶函数

    高阶函数需满足条件:

  • 函数名 作为 参数传入
  • 函数名 作为 返回值

4.闭包

    闭包的定义需要满足以下三个条件:

  • 在一个外函数中定义了一个内函数
  • 内函数里运用了外函数临时变量
  • 并且外函数返回值内函数的引用
# 运行顺序标在代码后面
def text(number): # 2
    print('--1--') # 3

    def text_in(number_in): # 6
        print(number_in) # 7
        print('--2--') # 8
        return number_in + number # 9
    print('--3--') # 4
    return text_in # 5


res = text(20) # 1
res1 = res(25) # 6
print(res1)
'''
输出结果
--1--
--3--
25
--2--
45
'''

5.装饰器

    装饰器 (@) 是一种语法糖,主要用于在函数或类的基础上添加一些可重用的额外功能。从应用开发的角度来看的话,我们使用装饰器来对我们的应用代码进行功能性扩展和包装,以提高代码的可重用性可维护性

  • 日志记录
  • 调用跟踪管理及参数验证
  • 在 Web 应用中进行登录验证或路由注册
  • 性能优化中记录任务执行时间

猜你喜欢

转载自blog.csdn.net/weixin_51158247/article/details/113094760