
当调用一个函数并期望使用其返回值时,必须将该返回值显式赋给变量;仅调用函数(如 convert(time))不会自动将返回值绑定到同名变量或使其在作用域中可用。
在你的代码中,convert(time) 确实正确计算并返回了浮点数(例如 "7:30" 返回 7.5),但你并未将这个返回值保存下来——而是直接执行了 print(conversion),而此时局部变量 conversion 在 main() 函数内部根本未被定义,因此触发 NameError: name 'conversion' is not defined。
✅ 正确做法是:用变量接收返回值,再使用它:
def main():
time = input("What time is it? ")
conversion = convert(time) # ← 关键:赋值接收返回值
print(conversion) # ← 此时 conversion 已定义且持有结果⚠️ 注意事项:
- conversion 是 convert() 函数内部的局部变量,作用域仅限于该函数内;它不会“泄漏”到 main() 中。
- 函数调用本身(如 convert(time))是一个表达式,其求值结果就是返回值,但若不赋值、不传参、不参与运算,该结果会被立即丢弃。
- 你已经熟练运用了这一机制:time = input(...) 就是把 input() 的返回值赋给 time——对 convert() 同理即可。
? 小技巧:你可以一步完成调用与打印,无需中间变量(适用于简单场景):
立即学习“Python免费学习笔记(深入)”;
print(convert(time)) # 直接打印函数返回值
但推荐显式赋值(如 conversion = convert(time)),既增强可读性,也便于后续调试、校验或复用该值。这是 Python 函数式编程的基本实践,也是避免作用域误解的关键习惯。










