最新案例动态,请查阅Python进阶:Python中的“公式”-函数。小伙伴们快来领取华为开发者空间进行实操吧!

1 概述

1.1 背景介绍

Python作为一门简洁高效的高级编程语言,自1991年由Guido van Rossum创建以来,凭借其易读性、灵活性和强大的生态系统,已成为数据分析、人工智能、Web开发、自动化脚本等领域的首选语言。而‌函数(Function)‌作为Python的核心编程概念之一,是构建程序逻辑的基础单元。学习函数不仅是掌握Python语法的必经之路,更是培养工程化编程思维的关键环节。

本案例将基于华为开发者空间进行。华为开发者空间集成了CodeArts IDE for Python,支持一站式、全流程、安全可信的软件开发生产线。

1.2 适用对象

  • 个人开发者
  • 高校学生

1.3 案例时间

本案例总时长预计40分钟。

1.4 案例流程

487b244c63c810e5df7fb4899a8fe48b.png
说明:

① 用户开通华为开发者空间,进入云主机;
② 在CodeArts IDE 编写代码进行Python函数学习。

1.5 资源总览

本案例预计花费0元。

资源名称 规格 单价(元) 时长(分钟)
华为开发者空间-云主机 鲲鹏通用计算增强型 kc2 | 4vCPUs | 8G | Ubuntu 免费 40

2 准备开发环境

2.1 配置云主机

参考“10分钟玩转云主机” 案例介绍中“2.2 申请云主机”章节内容完成华为开发者空间云主机申请与配置,配置云主机建议:

  • CPU架构:X86
  • 规格:2 vCPUs 4GB
  • 操作系统:Ubuntu
  • 系统镜像:公共镜像Ubuntu 22.04 Server定制版

5c9d93c10af55087041181306df59057.PNG

点击“进入桌面”进入云主机。

7e5a3aad2239cbe5a309de676fbee220.PNG

2.2 使用CodeArts IDE创建工程

参考“初识云主机:CodeArts IDE入门”案例介绍“3.1 新建工程”章节新建工程。

3 Python中的函数

下面我们主要围绕Python中函数的定义、匿名函数、高阶函数等这几个知识点进行函数的讲解和练习。

3.1 Python函数

函数是将可重复使用的代码块封装成独立功能的代码块,用于执行特定任务,旨在提高代码复用率、简化复杂逻辑并增强程序可维护性。

实践:定义一个函数,用于计算矩形的面积并返回。

Step1:删除“main.py”中原有内容,输入下列代码。

def calculate_area(a,b):
    """计算矩形的面积
    
    参数:
    a(int):矩形长度
    b(int):矩形宽度

    返回:
    两个数的乘积
    """
    return a * b

if __name__ == '__main__':
    # 计算矩形的面积
    rect_area = calculate_area(4,8)
    # 打印矩形的面积,输出:32
    print(f"矩形面积:{rect_area}")

Step2:点击右上角“运行”按钮,“调试控制台”可以看到打印结果“矩形面积:32”。

3.1.png

3.2 Python匿名函数

匿名函数(Lambda函数)是一种无需命名、单行实现简单逻辑的函数,通过‘lambda’关键字定义。

语法结构为:lambda 参数1,参数2:表达式

实践:筛选出list集合中所有的奇数并打印。

Step1:删除“main.py”中原有内容,输入下列代码。

def output_odd_num(nums):
    """输出列表中所有的奇数

    参数:
    nums(list):列表list

    返回:
    所有奇数的新列表
    filter(lambda x:x%2!=0,nums):过滤输入列表中所有的奇数
    """
    return list(filter(lambda x:x%2!=0,nums))

if __name__ == '__main__':

    # 输入列表nums
    nums = [1,2,3,4,5,6,7,8,9]

    # 打印输出结果:输出:[1, 3, 5, 7, 9]
    print(output_odd_num(nums))

Step2:点击右上角“运行”按钮,“调试控制台”可以看到输出结果“[1, 3, 5, 7, 9]”。
3.2.png

3.3 Python高阶函数

高阶函数是指可以接收函数作为参数或者返回函数作为结果的函数。常用的内置高阶函数有:map函数、reduce函数、filter函数、sorted函数等。

3.3.1 map函数

map函数接收两个参数,一个是函数,一个是Iterable对象。

核心功能:将函数作用于可迭代对象的每个元素,返回一个迭代器。

实践:将列表中的数据做平方计算返回,原始列表:[1,3,5,7],返回列表:[1, 9, 25, 49]。

Step1:删除“main.py”中原有内容,输入下列代码。

def output_num(nums):
    """对列表中的元素做平方计算返回一个新列表

    参数:
    nums(list):输入的数据列表

    返回:
    一个新列表,新列表中的元素是输入列表元素的平方
    """
    return list(map(lambda x:x**2,nums))

if __name__ == '__main__':
    # 输入列表数据
    nums = [1,3,5,7]
    # 打印新列表,输出:[1, 9, 25, 49]
    print(output_num(nums))

Step2:点击右上角“运行”按钮,“调试控制台”可以看到输出结果“[1, 9, 25, 49]”。

3.3.1.png

3.3.2 reduce函数

用于对可迭代对象(如列表、元组)进行累积计算。其核心逻辑是将一个接收两个参数的函数依次作用于序列的每个元素,最终将序列“缩减”为单一值。例如,计算列表元素的累加、乘积或字符串拼接等。

实践:计算列表中[1,2,3,4,5,6,7,8,9,10]元素的累加值。

Step1:删除“main.py”中原有内容,输入下列代码。

from functools import reduce  # Python3需导入模块 

def output_num(nums):
    """计算一个列表中所有元素的累加值

    参数:
    nums(list):输入列表nums

    返回:
    列表中所有元素的累加值,使用reduce
    """
    return reduce(lambda x,y:x+y,nums)

if __name__ == '__main__':
    # 输入列表数据nums
    nums = [1,2,3,4,5,6,7,8,9,10]
    # 打印出列表元素累加值,输出:55
    print(output_num(nums))

Step2:点击右上角“运行”按钮,“调试控制台”可以看到输出结果“55”。
3.3.2.png

3.3.3 filter函数

用于从可迭代对象(如列表、元组)中筛选出符合条件的元素,返回一个迭代器对象。

实践:从某班级同学中筛选考试成绩大于90分的同学。

Step1:删除“main.py”中原有内容,输入下列代码。

def output_student(students):
    """筛选出考试成绩大于90分的同学

    参数:
    students(list):所有同学考试成绩列表

    返回:
    考试成绩大于90分的同学列表,使用filter函数
    """
    return list(filter(lambda x:x['score']>90,students))

if __name__ == '__main__':
    # 所有同学考试成绩列表
    students = [{'name':'小王','score':74},{'name':'小李','score':92},{'name':'小赵','score':84}]
    # 打印出考试成绩大于90的同学,输出:[{'name': '小李', 'score': 92}]
    print(output_student(students))

Step2:点击右上角“运行”按钮,“调试控制台”输出结果“[{‘name’: ‘小李’, ‘score’: 92}]”。

3.3.3.png

3.3.4 sorted函数

对可迭代对象(如列表、元组、字典、字符串等)进行排序,返回新列表。

实践:对某班级同学期中考试成绩降序排列。

Step1:删除“main.py”中原有内容,输入下列代码。

def output_student(students):
    """考试成绩降序排列

    参数:
    students:考试成绩字典数据

    返回:
    考试成绩降序排列的列表

    students.items():可迭代的字典数据
    key=lambda x:x[1]['score']:按照score进行排序的函数
    reverse=True:降序排列
    """
    return sorted(students.items(),key=lambda x:x[1]['score'],reverse=True)

if __name__ == '__main__':
    # 考试成绩字典数据
    students = {'小王':{'score':74},'小李':{'score':92},'小赵':{'score':84}}

    # 打印数据,输出:[('小李', {'score': 92}), ('小赵', {'score': 84}), ('小王', {'score': 74})]
    print(output_student(students))

Step2:点击右上角“运行”按钮,“调试控制台”可以看到输出结果:

[('小李', {'score': 92}), ('小赵', {'score': 84}), ('小王', {'score': 74})]

3.3.4.png

4 Python中函数综合案例

结合上面知识点,来看一个完整的小程序。某小学语文期中考试成绩如下:

[{"name": "张三", "score": 85},{"name": "李四", "score": 92},{"name": "王五", "score": 78}]

请计算出本次语文考试成绩的平均分,所有学生成绩按降序排列,筛选出低于平均分的同学。

4.1 需求功能分析

实现功能如下:

  1. 根据提供的考试成绩数据,使用map函数提取学生考试成绩;
  2. 使用reduce函数,计算出本次语文考试成绩的平均分;
  3. 使用filter函数,筛选出低于平均分的学生;
  4. 使用sorted函数,对考试成绩降序排列。

4.2 编写代码验证

Step1:删除“main.py”中原有内容,输入下列代码。

from functools import reduce 
students = [{"name": "张三", "score": 85},{"name": "李四", "score": 92},{"name": "王五", "score": 78}]

if __name__ == '__main__':
    # 提取成绩map
    scores = list(map(lambda s: s["score"], students))

    # 计算全体平均分reduce
    total_score = reduce(lambda acc, x: acc + x, scores, 0)
    average_score = total_score / len(scores)

    # 筛选低分学生filter
    low_score_students = list(filter(lambda s: s["score"] < average_score,students ))

    # 按成绩排序sorted
    sorted_students = sorted(students, key=lambda s: s["score"],reverse=True)

    print("全体平均分:", average_score)
    print("低于平均分学生:", low_score_students)
    print("按成绩排序:", sorted_students)

Step2:点击右上角“运行”按钮,“调试控制台”可以看到输出结果:

全体平均分:85.0

低于平均分学生:[{‘name’: ‘王五’, ‘score’: 78}]

按成绩排序:[{‘name’: ‘李四’, ‘score’: 92}, {‘name’: ‘张三’, ‘score’: 85}, {‘name’: ‘王五’, ‘score’: 78}]

57ed341aa4ccd1872d3da7bacb7edf6f.PNG

Logo

欢迎大家加入成都城市开发者社区,“和我在成都的街头走一走”,让我们一起携手,汇聚IT技术潮流,共建社区文明生态!

更多推荐