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

如何将函数返回值作为另一函数参数传递?解决TypeError报错

函数返回值传递及代码报错解决

我搞不懂怎么把一个函数的返回值作为另一个函数的参数传递,搜了很多相关帖子都没找到解决方案。我的代码还有问题,首先得解决报错的问题。

需求说明

  • 创建无参数函数,要求用户输入生日,验证输入格式后返回date对象;
  • 创建接收date对象参数的函数,根据出生年份与当前年份计算用户年龄。

现有代码

import datetime as dt  # 原代码遗漏了必要的导入语句

def func1():
    bd = input("When is your birthday? ")
    try:
        dt.datetime.strptime(bd, "%m/%d/%Y")
    except ValueError as e:
        print("There is a ValueError. Please format as MM/DD/YYY")
    except Exception as e:
        print(e)
    return bd

def func2(bd):
    today = dt.datetime.today()
    age = today.year - bd.year
    return age

报错信息

TypeError: func2() missing 1 required positional argument: 'bday'

已尝试的方法

  • 将func1赋值给变量,再将该变量作为func2的参数传递;
  • 在func2内部调用func1;
  • 在func2内部定义func1的内容。

解决方案

你的代码存在两个核心问题,同时调用方式也需要调整:

1. 核心问题分析

  • func1没有返回date对象:你在try块中调用了dt.datetime.strptime解析日期,但未保存解析后的datetime对象,最终返回的是用户输入的原始字符串,这会导致func2无法访问bd.year属性;
  • 调用方式错误:当前报错大概率是调用func2时未正确传递参数(比如直接调用func2()没传参,或参数名写错)。

2. 修复后的完整代码

import datetime as dt

def func1():
    while True:
        bd_input = input("请输入你的生日(格式:MM/DD/YYYY):")
        try:
            # 解析为datetime对象并返回
            birthday = dt.datetime.strptime(bd_input, "%m/%d/%Y")
            return birthday
        except ValueError:
            print("格式错误,请按照MM/DD/YYYY的格式重新输入")
        except Exception as e:
            print(f"出现错误:{e}")

def func2(birthday):
    today = dt.datetime.today()
    # 优化年龄计算:考虑生日是否已过当年
    age = today.year - birthday.year
    if (today.month, today.day) < (birthday.month, birthday.day):
        age -= 1
    return age

# 正确传递参数的方式:将func1的返回值作为func2的参数
user_age = func2(func1())
print(f"你的年龄是:{user_age}")

# 也可以用变量中转的方式
# user_birthday = func1()
# user_age = func2(user_birthday)
# print(f"你的年龄是:{user_age}")

关键修复点

  • func1新增循环逻辑,确保用户输入正确格式的日期才退出,同时返回解析后的datetime对象;
  • func2优化年龄计算逻辑,避免出现“未到生日却多算一岁”的问题;
  • 通过func2(func1())直接将func1的返回值传递给func2,或用变量中转,确保参数传递正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:10:41