Python开发 —— 变量、全局变量函数的参数传递

1. Python变量

1.1 变量的定义和使用

        在Python中,变量不需要显式声明。通过赋值语句,变量会自动创建。例如:

x = 10
y = "Hello, World!"

        在这段代码中,`x` 被赋值为整数10,而 `y` 被赋值为字符串 "Hello, World!"。

1.2 变量的类型

        Python 是一种动态类型语言,这意味着变量的类型是在赋值时确定的,并且同一变量可以在程序的不同部分保存不同类型的值。例如:

x = 10
print(type(x))  # 输出 <class 'int'>
x = "Hello"
print(type(x))  # 输出 <class 'str'>

1.3 变量的作用域

        变量的作用域决定了变量在程序中的可访问范围。Python 主要有以下两种作用域:
        局部变量:在函数内部定义,只在函数内部有效。
        全局变量:在函数外部定义,可以在整个程序中访问。例如:

global_var = "I am a global variable"def my_function():local_var = "I am a local variable"print(global_var)  # 可以访问全局变量print(local_var)   # 可以访问局部变量my_function()
print(local_var)  # 会报错,因为 local_var 只在函数内部有效

2. Python的参数传递

2.1 不可变对象(不可变数据类型)

        不可变对象包括整数、浮点数、字符串和元组。这些对象在函数中被修改时,会生成新的对象,原对象保持不变。例如:

def add_one(num):num += 1return numa = 5
print(add_one(a))  # 输出 6
print(a)           # 输出 5,a 的值没有被修改

        在这个例子中,`num += 1` 创建了一个新的整数对象,而 `a` 的值没有改变。

2.2 可变对象(可变数据类型 )

        可变对象包括列表、字典和集合。这些对象在函数中被修改时,会影响到函数外的对象。例如:

def append_one(lst):lst.append(1)my_list = [0]
append_one(my_list)
print(my_list)  # 输出 [0, 1]

        在这个例子中,lst.append(1) 修改了 `my_list` 的内容,因为 `lst` 和 `my_list` 引用的是同一个对象。

3. 开发出现的问题

def logic_data_record(folder_num):folder_num += 1return folder_numfolder_num = 0
while True:result = logic_data_record(folder_num)print(result)

        在代码中,`folder_num` 被作为参数传递给 `logic_data_record` 函数,并在函数内部的执行过程中递增。然而,每次调用该函数时,都从外部的 `while` 循环传递相同的初始值 `0` 给该函数,这导致每次调用函数时 `folder_num` 都被重新初始化为 `0`。

4. 解决方法1——使用 global 

        为了在函数中修改全局变量,需要使用 `global` 关键字声明该变量是全局的。这使得函数内部对该变量的修改会影响到全局作用域中的变量。

4.1 代码示例

folder_num = 0  # 定义全局变量def logic_data_record():global folder_num  # 声明使用全局变量folder_num += 1  # 修改全局变量return folder_numwhile True:result = logic_data_record()  # 调用函数,递增 folder_numprint(result)  # 输出递增后的值

4.2 详细解释

4.2.1 定义全局变量

folder_num = 0

        folder_num 是一个全局变量,初始值为0。

4.2.2 声明使用全局变量

def logic_data_record():global folder_num  # 声明 folder_num 为全局变量folder_num += 1  # 修改全局变量return folder_num

        在 logic_data_record 函数中,使用 global folder_num 声明 folder_num 是全局变量。这样,函数内对 folder_num 的修改会影响到全局范围内的 folder_num。

4.2.3 循环调用函数

while True:result = logic_data_record()  # 调用函数,递增 folder_numprint(result)  # 输出递增后的值

        在 `while` 循环中,每次调用 `logic_data_record` 函数,`folder_num` 都会递增,并将递增后的值打印出来。

        通过这种方式,每次循环时 `folder_num` 的值都会递增,并且变化会在全局范围内生效。

5. 解决方法2

        为了让 `folder_num` 能够持续递增,需要将递增后的 `folder_num` 值返回给 `while` 循环,并使用这个返回值更新外部的 `folder_num` 变量。这样,每次循环时传递给函数的 `folder_num` 值都会是最新的递增值。

        可以修改 `logic_data_record` 函数,使其在最后返回更新后的 `folder_num` 值。然后在 `while` 循环中使用这个返回值来更新外部的 `folder_num` 变量。以下是代码示例:

def logic_data_record(folder_num):folder_num += 1return folder_numfolder_num = 0
while True:folder_num = logic_data_record(folder_num)print(folder_num)

        通过这种方式,每次函数调用后都会递增 `folder_num`,并将新值传回主循环,使得下一次函数调用时使用的是递增后的值。这样就可以确保 `folder_num` 在每次迭代中都是增加的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/18154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloudOpenFeign的详解

1. SpringCloud OpenFeign的特性 1. 概念 Feign是一个声明式web Rest服务客户端。它使编写web服务客户端更容易要使用Feign&#xff0c;请创建一个接口并对其使用注解进行标注它具有可插入注释支持&#xff0c;包括Feign注释和JAX-RS注释Feign还支持可插拔编码器和解码器Spri…

Day25

Day25 网络编程概念 计算机网络 网络编程&#xff1a;TCP协议的三次握手四次挥手 IP地址&#xff0c;端口号&#xff1a;取值范围&#xff1a;065535&#xff0c;保留端口号&#xff1a;01024。 网络协议&#xff1a;TCP协议&#xff08;类比于打电话&#xff0c;双方需要连接…

项目构建工具maven

一、概述 1、maven是apache的一个开源项目&#xff0c;是一个优秀的项目构建/管理工具 2、apache(软件基金会、非盈利组织、管理维护一些开源项目) 二、功能 1、管理项目中jar包和jar包与jar包之间的依赖 2、完成项目编译、测试、打包 三、核心文件 pom.xml:在里面配置相…

信息学奥赛初赛天天练-14-阅读程序-字符数组、唯一分解定理应用

更多资源请关注纽扣编程微信公众号 1 2019 CSP-J 阅读程序1 (程序输入不超过数组或字符串定义的范围&#xff1b;判断题正确填√,错误填&#xff1b;除特殊说明外&#xff0c;判断题1.5分&#xff0c;选择题3分&#xff0c;共计40分) 1 输入的字符串只能由小写字母或大写字母组…

Redis的非关系型数据库

第七天课堂笔记 今日目标 非关系型数据库&#xff08;nosql【not only SQL】数据库&#xff09; Redis的非关系型数据库 Redis的安装和配置 Redis常见数据类型 Redis特性 nosql数据库 not only sql数据库&#xff0c;非关系型数据库&#xff0c;往往采用类似于json来存储数…

【大宗】第一期:大航海时代下的[集运欧线]

一、大航海时代 - 集运欧线前世今生 01 航运合约指数的诞生 ‍‍‍‍ 2023年8月18日&#xff0c;上海期货交易所的伙伴们搞了个大新闻——他们推出了一种新的期货品种&#xff0c;叫做“欧线集运”。这可不是什么普通的期货&#xff0c;它是基于一个叫做SCFIS的指数&#xf…

上海汇正财经官网怎么样?客户好评如潮,口碑赞誉之声不绝于耳

在财经服务领域&#xff0c;客户评价是衡量一家企业信誉和服务质量的重要标准。上海汇正财经作为业内知名的财经服务平台&#xff0c;以其优质的服务赢得了广大客户的认可和好评。大量正面用户评价和成功服务的案例&#xff0c;充分证明了上海汇正财经是一个值得信赖的正规企业…

每日两题 / 131. 分割回文串 42. 接雨水(LeetCode热题100)

131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 数据量较小&#xff0c;考虑直接暴力&#xff0c;每次dfs&#xff1a;以bg作为左区间&#xff0c;往右遍历&#xff0c;找到一段回文串区间后&#xff0c;将回文串插入vector<string>&#xff0c;并以下一个下标…

段位在于面对人性之恶,一笑而过

这个小哥哥不知道是哪里不对劲了&#xff0c;突然给我留言说我在骗流量&#xff0c;骗关注。公众号是我的&#xff0c;文章是我写的&#xff0c;主要分享的就是我创业的一些接单案例&#xff0c;因为之前收到很多无效的留言&#xff0c;寻求合作就几个字我不想接收无效信息&…

Day18学习Java

File - 文件类 File&#xff0c;是文件和目录路径名的抽象表示。 File只关注文件本身的信息&#xff0c;而不能操作文件里面的内容。 File类 – 表示文件或文件夹&#xff0c;不能对文件里的数据进行操作。 对文件里的数据进行操作的是&#xff1a;IO流。 需求1&#xff1a;通…

Unity 权限 之 Android 【权限 动态申请】功能的简单封装

Unity 权限 之 Android 【权限 动态申请】功能的简单封装 目录 Unity 权限 之 Android 【权限 动态申请】功能的简单封装 一、简单介绍 二、Android 权限 动态申请 三、实现原理 四、注意事项 五、案例实现简单步骤 附录&#xff1a; 一、进一步优化 二、多个权限申请…

第三方软件检测机构要具备哪些资质要求?专业测试报告如何申请?

第三方软件检测机构是独立于软件开发商和用户之外的公正机构&#xff0c;负责对软件进行全面的检测和评估。其独立性保证了评测结果的客观性和公正性&#xff0c;有效避免了软件开发商对自身产品的主观偏见和误导。 要成为一家合格的第三方软件检测机构&#xff0c;需要具备一…

网络编程——多进程的服务器

多进程的网络服务器 多进程的网络服务器是一种使用多个进程来处理并发网络请求的服务器架构。在这种架构中&#xff0c;服务器在接收到客户端连接请求后&#xff0c;会创建一个新的子进程来处理该请求&#xff0c;从而允许服务器同时处理多个客户端连接。多进程服务器通常用于…

OKR 实践:来自一位信息技术部主管的成功秘诀

OKR 实践&#xff1a;来自一位信息技术部主管的成功秘诀 为什么选择OKR 公司信息技术部为38个各地分公司、12,000名员工的IT需求提供服务。庞大而多样的客户群常常使我们的团队分散&#xff0c;许多团队都在各自为政&#xff0c;以个案为基础解决问题&#xff0c;而不是采用企业…

线上监控诊断利器:Arthas,你值得拥有

1. 引言 在现代软件开发中&#xff0c;线上监控和诊断是确保应用稳定性和性能的关键环节。然而&#xff0c;对于Java开发者来说&#xff0c;传统的监控工具往往难以深入到代码层面进行实时分析。这正是Arthas这一线上监控诊断工具大展身手的地方。本文将深入探讨Arthas&#x…

LabVIEW高低温试验箱控制系统

要实现LabVIEW高低温试验箱控制系统&#xff0c;需要进行硬件配置、软件设计和系统集成&#xff0c;确保LabVIEW能够有效地监控和控制试验箱的温度。以下是详细说明&#xff1a; 硬件配置 选择合适的试验箱&#xff1a; 确定高低温试验箱的型号和品牌。 确认试验箱是否支持外…

摸鱼大数据——Hive表操作——文件数据的导入和导出

数据导入和导出 1、文件数据导入 1.1 直接上传文件 window页面上传 需求: 已知emp1.txt文件在windows/mac系统,要求使用hdfs保存此文件 并且使用hivesql建表关联数据 use day06; ​ -- 1- 创建Hive表 create table emp1 (id int,name string,salary int,dept string )row for…

基于51单片机的汽车智能灯光控制系统

一.硬件方案 本设计硬件部分&#xff0c;中央处理器采用了STC89C52RC单片机&#xff0c;另外使用两个灯珠代表远近光灯&#xff0c;感光部分采用了光敏电阻&#xff0c;因为光敏电阻输出的是电压模拟信号&#xff0c;单片机不能直接处理模拟信号&#xff0c;所以经过ADC0832进…

基于python flask +pyecharts实现的气象数据可视化分析大屏

背景 气象数据可视化分析大屏基于Python Flask和Pyecharts技术&#xff0c;旨在通过图表展示气象数据的分析结果&#xff0c;提供直观的数据展示和分析功能。在当今信息化时代&#xff0c;气象数据的准确性和实时性对各行业具有重要意义。通过搭建气象数据可视化分析大屏&…

Vue 3 教程:入门指南

Vue 3 教程&#xff1a;入门指南 Vue 3 教程&#xff1a;入门指南 Vue 3 教程&#xff1a;入门指南引言1. 初始化项目2. 响应式数据使用 ref使用 reactive 3. 计算属性4. 侦听器5. 组合式 API6. 总结 引言 Vue.js 是一个用于构建用户界面的渐进式框架。Vue 3 引入了许多新的特…