Python如何在函数外部访问函数内部创建的指定变量
问题原因
你直接在函数外部打印qp_total会报错,是因为函数内部定义的变量属于局部作用域,默认只能在函数内部访问,外部无法直接调用。另外你当前代码还有一个隐藏问题:input()返回的是字符串类型,直接做除法运算会抛出类型错误,需要先转换为数值类型。
实现方法
你已经在函数末尾用return返回了三个变量组成的元组,只需要在调用函数时接收返回值即可按需取单个变量,有两种常用写法:
- 按返回顺序赋值给对应变量
# 先把weight转成浮点数 weight = float(input('Enter Amount: ')) def quantity(): p_total = weight / 454 print(f'Amount: {p_total}') hp_total = weight / 227 print(f'Amount HP: {hp_total}') qp_total = weight / 114 print(f'Amount QP: {qp_total}') return p_total, hp_total, qp_total # 调用函数,按顺序接收三个返回值 p_total, hp_total, qp_total = quantity() # 之后就可以直接调用任意变量 print(qp_total) print(p_total)
- 若仅需要某一个返回值,可以用下划线占位忽略不需要的内容,比如只要
qp_total:
# 前两个返回值用_占位,表示不需要接收 _, _, qp_total = quantity() print(qp_total)
如果想不依赖返回顺序、更灵活地取值,也可以选择返回字典:
def quantity(): p_total = weight / 454 print(f'Amount: {p_total}') hp_total = weight / 227 print(f'Amount HP: {hp_total}') qp_total = weight / 114 print(f'Amount QP: {qp_total}') # 返回字典,key对应变量名,value对应计算值 return { "p_total": p_total, "hp_total": hp_total, "qp_total": qp_total } res = quantity() # 按需取对应key的值即可,不需要记忆返回顺序 print(res["qp_total"]) print(res["p_total"])
场景适用性说明
这种场景非常适合用函数:你把重量转换的逻辑封装在一起,后续如果需要修改转换系数、或者新增转换规则,只需要修改quantity函数内部的代码即可,不需要改动外部调用的部分,符合代码封装复用的原则。
内容的提问来源于stack exchange,提问作者Rhyez
相关产品推荐
相关产品推荐

