
新手常误以为可在终端直接调用 python 文件中定义的函数,但实际上需通过脚本执行或进入交互式解释器才能调用;本文详解两种标准做法,并附修正后的完整代码与关键注意事项。
新手常误以为可在终端直接调用 python 文件中定义的函数,但实际上需通过脚本执行或进入交互式解释器才能调用;本文详解两种标准做法,并附修正后的完整代码与关键注意事项。
当你在终端输入 python3 loyalty.py 后,Python 会成功加载并解析该文件——但仅止于此:它定义了 decideReward 函数,却并未主动调用它。随后你回到 shell 环境(zsh),此时输入 decideReward(4000) 被 zsh 当作命令解析,而 zsh 并不认识这个函数,因此报错 zsh: unknown file attribute: 4(因括号和数字被误解析为扩展属性语法)。
✅ 正确做法一:修改脚本,自动执行函数
在 loyalty.py 文件末尾添加调用语句,使脚本运行时即触发逻辑:
def decideReward(points):
if not isinstance(points, int):
decision = "invalid"
print("Invalid input! You should provide an integer!")
return decision
if points < 0:
decision = "invalid"
print("Invalid input! You should provide a non-negative integer!")
return decision
if points < 500:
decision = "no reward"
elif points < 1500:
decision = "appetiser"
elif points < 5000:
decision = "main course"
elif points <= 10000:
decision = "fine dining set"
else:
decision = "unable to earn > 10000"
print("The reward is: " + decision)
return decision
# ✅ 添加这一行,让脚本运行时自动执行示例
decideReward(4000)保存后,在终端执行:
cd /Users/rakshitdhanda/Downloads/SQT_lab7_pack2/lab7 python3 loyalty.py
输出将为:
The reward is: main course
✅ 正确做法二:使用 Python 交互式环境(推荐用于调试)
保持 loyalty.py 原样(不加调用语句),启动交互式 Python:
python3
进入 Python 提示符 >>> 后,导入函数并调用:
调用 Cutout.Pro 视觉处理 API 进行背景移除、人像抠图和照片增强,支持文件上传与图片 URL 输入。
立即学习“Python免费学习笔记(深入)”;
>>> from loyalty import decideReward >>> decideReward(4000) The reward is: main course 'main course' >>> exit() # 或按 Ctrl+D 退出
? 小贴士:
- elif 替代嵌套 if 可显著提升代码可读性与维护性(已优化示例);
- 避免在函数内混用 print() 和 return 逻辑——当前设计合理(先打印结果再返回),但若用于模块复用,建议将输出与计算分离;
- 终端命令区分「shell 命令」(如 cd, python3 filename.py)和「Python 代码」(如 decideReward(4000)),二者不可跨环境混用。
掌握这两种执行方式,你就能稳定、可控地测试和调试任何 Python 函数——这是迈向自动化与工程化开发的第一步。

















