Python输入值可作函数参数吗?函数调用报NameError问题排查
问题分析与解决
关于Python输入值能否作为函数参数
完全可以。你可以直接将input()获取的用户输入值作为参数传递给函数,示例如下:
def calculate_total(price, quantity): return price * quantity # 将输入值作为参数传入函数 unit_price = float(input("请输入商品单价:")) buy_quantity = int(input("请输入购买数量:")) total_price = calculate_total(unit_price, buy_quantity)
函数调用错误原因与修复
你遇到的NameError: name 'item_bought_1' is not defined,核心问题是函数内部定义的变量是局部变量,外部无法直接访问。
错误代码示例(模拟你的场景)
def question_asker(): # 这里的变量是函数内部的局部变量,外部无法访问 item_bought_1 = input("请输入商品名称:") price_1 = float(input("请输入商品单价:")) quantity_1 = int(input("请输入商品数量:")) total_1 = price_1 * quantity_1 question_asker() print(item_bought_1) # 外部访问局部变量,触发NameError
修复方案:让函数返回需要的数据,调用时接收返回值
修改函数,通过return语句输出需要的信息,调用时将返回值赋值给外部变量:
def question_asker(): item_name = input("请输入商品名称:") price = float(input("请输入商品单价:")) quantity = int(input("请输入商品数量:")) total = price * quantity # 返回多个值,本质是返回一个元组 return item_name, price, quantity, total # 调用函数并接收返回的变量 item_bought_1, price_1, quantity_1, total_1 = question_asker() # 后续可使用这些变量生成表格 print(f"| 商品名称 | 单价 | 数量 | 总价 |") print(f"|----------|------|------|------|") print(f"| {item_bought_1} | {price_1} | {quantity_1} | {total_1} |")
关键要点
- 函数内部定义的变量默认是局部作用域,仅在函数内部有效
- 若要在外部使用函数内的输入值或计算结果,必须通过
return语句传递数据 - 调用函数时,需要用变量接收返回内容,否则数据会直接丢失
内容的提问来源于stack exchange,提问作者Margret Mauno
相关产品推荐
相关产品推荐

