函数调用与作用域

server/2024/9/24 16:30:45/

引言

        在前面的课程中,我们已经学习了 Python 的基本输入输出、数据类型及其转换、顺序结构、分支结构、循环结构、循环控制语句、字符串类型、列表类型、元组类型、字典类型、集合类型以及函数的定义与使用。本课时将介绍 Python 中的函数调用与作用域,包括如何调用函数、局部变量与全局变量的概念,并通过一个具体的示例来展示如何使用函数解决实际问题。

函数调用

调用函数是执行函数体中的代码的过程。在 Python 中,调用函数的基本语法如下:

function_name(arguments)
  • function_name:函数名。
  • arguments:传递给函数的参数,可以没有参数,也可以有多个参数,参数之间用逗号 , 分隔。

示例:调用函数

def greet(name):print(f"Hello, {name}!")greet("Alice")  # 调用函数

局部变量与全局变量

在 Python 中,变量的作用域决定了变量在哪些地方可以被访问。主要有两种变量作用域:局部变量和全局变量。

  1. 局部变量

    • 局部变量是在函数内部定义的变量,只能在函数内部访问。
    def my_function():local_var = 10  # 局部变量print(local_var)my_function()  # 输出 10
    # print(local_var)  # 报错:NameError: name 'local_var' is not defined
  2. 全局变量

    • 全局变量是在函数外部定义的变量,可以在整个模块中访问。
    global_var = 20  # 全局变量def my_function():print(global_var)my_function()  # 输出 20
    print(global_var)  # 输出 20
  3. 修改全局变量

    • 如果在函数内部需要修改全局变量,需要使用 global 关键字声明。
    global_var = 20def modify_global():global global_varglobal_var = 30print(global_var)  # 输出 20
    modify_global()
    print(global_var)  # 输出 30

使用函数解决实际问题

        现在我们通过一个具体的示例来展示如何使用函数解决实际问题。假设我们需要编写一个程序,该程序可以计算一个列表中所有奇数的平方和。

示例代码

# 定义一个函数,计算一个列表中所有奇数的平方和
def sum_of_squares_of_odds(numbers):""" 计算列表中所有奇数的平方和。"""total = 0for number in numbers:if number % 2 != 0:total += number ** 2return total# 定义一个函数,生成一个包含 n 个随机整数的列表
def generate_random_numbers(n, lower_bound, upper_bound):""" 生成一个包含 n 个随机整数的列表。"""import randomreturn [random.randint(lower_bound, upper_bound) for _ in range(n)]# 主程序
def main():# 生成一个包含 10 个随机整数的列表random_numbers = generate_random_numbers(10, 1, 100)print(f"生成的随机数列表:{random_numbers}")# 计算奇数的平方和result = sum_of_squares_of_odds(random_numbers)print(f"奇数的平方和:{result}")# 运行主程序
if __name__ == "__main__":main()

示例解析

  1. 定义函数 sum_of_squares_of_odds

    • 该函数接收一个列表 numbers,计算列表中所有奇数的平方和。
    • 使用 for 循环遍历列表中的每个元素,如果是奇数,则计算其平方并累加到 total 中。
    • 最后返回 total
  2. 定义函数 generate_random_numbers

    • 该函数生成一个包含 n 个随机整数的列表。
    • 使用 random.randint() 函数生成随机整数,并使用列表推导式生成列表。
  3. 主程序 main

    • 生成一个包含 10 个随机整数的列表,并打印该列表。
    • 调用 sum_of_squares_of_odds 函数计算奇数的平方和,并打印结果。

小结

        通过本课时的学习,你已经掌握了 Python 中的函数调用与作用域,并通过一个具体的示例展示了如何使用函数解决实际问题。理解局部变量与全局变量的概念对于编写清晰、高效的代码非常重要。函数作为重要的编程构造,可以帮助我们更好地组织代码,减少重复代码,提高代码的可读性和可维护性。


http://www.ppmy.cn/server/119100.html

相关文章

多个音频怎么合并?把多个音频合并在一起的方法推荐

多个音频怎么合并?无论是制作连贯的播客节目还是将音乐片段整合成专辑,音频合并已成为许多创作者的常见需求。通过有效合并音频,可以显著提升项目的整体质量,确保内容的连续性和一致性。然而,合并后的文件通常比原始单…

LLMs之SuperPrompt:SuperPrompt的简介、使用方法、案例应用之详细攻略

LLMs之SuperPrompt:SuperPrompt的简介、使用方法、案例应用之详细攻略 目录 SuperPrompt的简介 SuperPrompt的使用方法 1、prompt SuperPrompt的案例应用 SuperPrompt的简介 SuperPrompt项目是一个开源项目,旨在通过设计特定的提示词来帮助我们更好…

Java 原生API实现TCP客户端:发送和接收GBK编码消息

文章目录 需求I Java 实现TCP客户端(NIO)II Java 实现TCP客户端(BIO)建立连接发送登陆指令发送心跳发送GBK编码消息接收GBK编码消息发送16进制字符串消息工具方法需求 需求:发送北斗消息给船舶设备终端 动态信息交换接口采用TCP自定义协议实现数据接口:针对TCP协议的粘包拆包…

pm2 进程守护python flask

pm2 进程守护python flask 文章目录 pm2 进程守护python flask安装Node.js安装pm2上传文件至服务器python 配置生成requirements.txtpython 虚拟环境使用Python自带的venv模块创建和管理虚拟环境使用virtualenv工具创建和管理虚拟环境使用pyenv工具创建和管理虚拟环境 安装依赖…

Table列表复现框实现【勾选-搜索-再勾选】

Table列表复现框实现【勾选-搜索-再勾选】 概要整体架构流程代码实现技术细节注意参考文献 概要 最近在开发时遇到一个问题,在进行表单渲染时,正常选中没有问题,单如果需要搜索选中时,一个是已选中的不会回填,二是在搜…

爬虫代理API的全面解析:让数据抓取更高效

在大数据时代,网络爬虫已经成为收集和分析数据的重要工具。然而,频繁的请求会导致IP被封禁,这时候爬虫代理API就显得尤为重要。本文将详细介绍爬虫代理API的作用、优势及如何使用,帮助你更高效地进行数据抓取。 什么是爬虫代理AP…

[JVM]JVM内存划分, 类加载过程, 双亲委派模型,垃圾回收机制

文章目录 一. JVM内存划分1. 堆2. 栈3. 元数据区4. 程序计数器 二. 类加载过程1. 加载2. 验证3. 准备4. 解析5. 初始化 三. 双亲委派模型四. JVM的垃圾回收机制GC1. 找到需要回收的对象2. 释放垃圾的策略 一. JVM内存划分 JVM就是java进程 这个进程一旦跑起来, 就会从操作系统…

STL—Vector详解

1.vector的介绍和使用 vector实际上是一个类模板&#xff0c;allocator (对象分配的元素的类型) 是第二个模板参数。 2.vector的使用 (1) vector的定义 int TestVector1() {// constructors used in the same order as described above:vector<int> first; …