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

Python新手求助:如何在另一个函数中使用函数返回的变量

Python函数变量传递问题:编码生成与解析

原代码存在的问题

第一种写法的问题

  1. code() 返回的是元组(n1, gender, n2),不是你需要的拼接后的编码字符串
  2. code_details() 没有接收外部传入的编码,而是直接调用 code() 获取数据,完全偏离了“接收编码并解析”的设计目的
  3. 打印 code 是输出函数对象本身,不是编码字符串
  4. print(code_details()) 会多打印一个 None,因为 code_details() 没有返回值

第二种写法的问题

  1. 代码里的 code_client() 是未定义的函数,逻辑混乱
  2. 试图访问字符串的 .gender、.n1 属性——字符串根本没有这些属性,这是对Python数据类型的误解
  3. 完全没有实现拆分编码字符串的逻辑

正确实现方案

根据你的需求,提供两种实用的实现方式:

方案1:用字典传递结构化数据(新手友好,逻辑清晰)

让 code() 返回包含拼接编码和所有变量的字典,这样 code_details() 可以直接提取需要的信息:

def code():
    n1 = input("enter number 1 :")
    gender = input("enter male or female :")
    n2 = input("enter number 2 :")
    encoded = n1 + gender + n2
    # 返回包含所有信息的字典
    return {"encoded": encoded, "n1": n1, "gender": gender, "n2": n2}

def code_details(data):
    # 从字典中提取数据并按要求输出
    print(f"{data['encoded']}, {data['gender']}, {data['n1']}, {data['n2']}")

# 调用流程
result = code()
code_details(result)

方案2:仅传递编码字符串,在code_details中解析(严格符合“code返回拼接编码”的要求)

如果必须让 code() 只返回拼接后的编码字符串,那么需要在 code_details() 中按照规则拆分字符串(假设性别是单个非数字字符,前后都是数字):

def code():
    n1 = input("enter number 1 :")
    gender = input("enter male or female :")
    n2 = input("enter number 2 :")
    # 只返回拼接后的编码
    return n1 + gender + n2

def code_details(encoded_str):
    # 找到性别字符的位置(第一个非数字字符)
    gender_pos = next(i for i, c in enumerate(encoded_str) if not c.isdigit())
    # 拆分出各个变量
    n1 = encoded_str[:gender_pos]
    gender = encoded_str[gender_pos]
    n2 = encoded_str[gender_pos+1:]
    # 输出结果
    print(f"{encoded_str}, {gender}, {n1}, {n2}")

# 调用流程
encoded = code()
code_details(encoded)

测试效果

当输入 30、m、22 时,两种方案都会输出:

30m22, m, 30, 22

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:45:37