python-3.x - 如何将被调用函数中的局部变量更新为python中的函数参数?
问题描述
如果您在函数中创建局部变量,然后以这些变量作为参数调用函数。您如何更新变量的值,使其反映在两个函数中?
披露:
- 被调用的函数是代码主体的分段片段,用于整洁并减少代码重复。被调用的函数只在有条件的情况下被调用,并不一定返回任何东西。它所做的只是一些更新函数参数中传递的变量值的计算。
您将如何获取函数 2 中的值以更新与函数 1 中相同的值?
先感谢您!
例如:
def function_1():
object_1 = 1
object_2 = 2
function_2(object_1, object_2)
print("Original values add up to {}".format(object_1 + object_2))
def function_2(object_1, object_2):
object_1 += 1
object_2 += 2
print("Updated values add up to {}".format(object_1 + object_2))
if __name__ == '__main__':
function_1()
Updated values add up to 6
Original values add up to 3
解决方案
选项 1:将更新后的值返回给调用函数
def function_1():
...
object_1, object_2 = function_2(object_1, object_2)
...
def function_2(object_1, object_2):
...
return object_1, object_2
function_1()
选项 2:在(例如 adict
或 a或自定义类)中构建数据结构list
,然后将其作为参数传递给function_2()
; dict
您对内部所做的更改function_2()
将反映在 中function_1()
,因为它是相同的,您只是在函数之间dict
传递了对相同参数的引用。dict
def function_1():
...
data = {'object_1': 1, 'object_2': 2}
function_2(data)
# the variable 'data' contains the changes made in 'function_2()'
print(data)
...
def function_2(data):
# the variable 'data' points to the same dict as in 'function_1()'
data['object_2'] += 55
...
我现在可能没有其他选择,但我认为这两个是更简单的选择。
推荐阅读
- python - 2列上的Array_agg,输出未被识别为列表
- json - JSON SWIFT,如何访问值
- c# - 在以不同方法创建的对象上使用
- python - 无法使用搜索关键字解析网页中的某些信息
- node.js - Mongoose 警告:DeprecationWarning:当前的服务器发现和监控引擎已弃用?
- java - 使用 Maven 程序集插件作为 project.basedir 或 project.build.directory 创建 zip 原型更好吗?
- django - 在 Django 中为 Meta Tag 使用 model.save 数据
- java - 如何在 ubuntu 16.04 的 hadoop 中设置 JAVA_HOME 变量
- css - @include 出口处的 CSS 编译错误('class-name')
- java - 使用来自数组的连接整数创建字符串时出现问题