You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何实现可修改全局变量余额的地址转账函数?

解决转账函数修改全局余额的问题

原代码的核心问题

  • 全局变量声明错误:global关键字应该在函数内部使用,用来声明要操作的是全局变量,而非在全局作用域中提前标注。
  • 参数传递是值副本:你传入的from_addr和to_addr是全局变量的数值副本,函数内部修改的只是局部变量,不会影响全局的余额变量。

方案一:用字典存储地址余额(推荐)

用字典统一管理所有地址与余额的映射,传递地址的键名就能直接修改对应余额,灵活且易扩展:

# 字典存储所有地址的余额
addresses = {
    "addr_1": 1000,
    "addr_2": 200,
    "addr_3": 0
}

def tx(from_addr_key, to_addr_key, tx_input):
    # 检查地址是否存在
    if from_addr_key not in addresses or to_addr_key not in addresses:
        print("TRANSACTION ERROR: Address does not exist")
        return
    # 检查余额是否足够
    if addresses[from_addr_key] < tx_input:
        print("TRANSACTION ERROR: Balance too low")
        return
    # 执行转账操作
    addresses[from_addr_key] -= tx_input
    addresses[to_addr_key] += tx_input
    # 返回转账结果
    return f"From Address: {from_addr_key} ({addresses[from_addr_key]}), To Address: {to_addr_key} ({addresses[to_addr_key]})"

# 测试示例
tx("addr_1", "addr_3", 300)
print(addresses["addr_1"])  # 输出700
print(addresses["addr_3"])  # 输出300

方案二:直接操作全局变量(不推荐,扩展性差)

如果必须使用单独的全局变量,可以通过globals()函数根据变量名直接修改全局变量:

addr_1 = 1000
addr_2 = 200
addr_3 = 0

def tx(from_addr_name, to_addr_name, tx_input):
    # 获取全局变量字典
    global_vars = globals()
    # 检查变量是否存在
    if from_addr_name not in global_vars or to_addr_name not in global_vars:
        print("TRANSACTION ERROR: Address variable does not exist")
        return
    # 检查余额是否足够
    if global_vars[from_addr_name] < tx_input:
        print("TRANSACTION ERROR: Balance too low")
        return
    # 修改全局变量值
    global_vars[from_addr_name] -= tx_input
    global_vars[to_addr_name] += tx_input
    # 返回转账结果
    return f"From Address: {from_addr_name} ({global_vars[from_addr_name]}), To Address: {to_addr_name} ({global_vars[to_addr_name]})"

# 测试示例
tx("addr_1", "addr_2", 200)
print(addr_1)  # 输出800
print(addr_2)  # 输出400

方案对比

方案一通过字典统一管理地址,新增地址只需在字典中添加键值对,无需修改函数逻辑,代码耦合度低;方案二依赖全局变量名,后续维护和扩展容易出错,仅适合简单场景。

内容的提问来源于stack exchange,提问作者anon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:45:10