python - 为什么在 Python 3.7 中明确使用时不使用变量
问题描述
我正在尝试创建一个函数,我输入一个值var
并输出一个值var2
,但它不起作用。
我尝试使用 return 函数使代码返回值,但这并没有改变任何东西。
def translate_num(var, var2):
if var == 0:
var2 = ""
return var2
if var == 1:
var2 = "x"
return var2
if var == 2:
var2 = "o"
return var2
从这里只是为了我使用代码的一些上下文 # !not the full context
top_lef = game[0][0]
top_mid = game[0][1]
top_rig = game[0][2]
mid_lef = game[1][0]
mid_mid = game[1][1]
mid_rig = game[1][2]
bot_lef = game[2][0]
bot_mid = game[2][1]
bot_rig = game[2][2]
translate_num(top_lef, var1)
translate_num(top_mid, var2)
translate_num(top_rig, var3)
translate_num(mid_lef, var4)
translate_num(mid_mid, var5)
translate_num(mid_rig, var6)
translate_num(bot_lef, var7)
translate_num(bot_mid, var8)
translate_num(bot_rig, var9)
print(" --- --- --- \n| ", var1, " || ", var2, " || ", var3, " | \n --- --- --- \n --- --- --- "
"\n| ", var4, " || ", var5, " || ", var6,
" |\n --- --- --- \n --- --- ---"
" \n| ", var7, " || ", var8, " || ", var9, " |\n --- --- ---")
Pycharm 提出一个错误,指出var2
未使用该参数并且该函数var2
从外部范围隐藏。我希望var2
,var3
等var4
打印到 translate_num 将它们变成的内容,但它们打印为我在代码中前面定义的内容。
解决方案
我希望
var2
,var3
等var4
打印到 translate_num 将它们变成的内容,但它们打印为我在代码中前面定义的内容。
您不能设置参数的值。所以这种var2 = ""
说法毫无意义。你所做的是设置局部变量。但是调用方的变量不会更新。想象一下,你用 调用了这个函数translate_num(0, 5)
,那么你希望你的代码做什么?为文字分配一个字符串5
?如果你用 调用它translate_num(0, 1+2)
,那么你会将它分配给函数调用怎么办?因此,它会导致很多奇怪的行为。一些编程语言允许这样的“按引用传递”,如 C++ 和 C#(使用ref
andout
参数)。
因此,我们应该在这里使用返回值将结果传回并将其分配给变量:
def translate_num(i):
return 'xo'[i-1:i]
然后你可以设置变量,如:
var1 = translate_num(top_lef)
var2 = translate_num(top_mid)
var3 = translate_num(top_rig)
# ...
推荐阅读
- node.js - 为什么`sudo npm uninstall htmlhint -g`没有从`node_modules`中删除`htmlhint`文件夹?不工作?
- python-3.x - 成对的相似代码会产生由“except”语句引起的不同结果
- c++ - 将函数指针传递给模板类
- scala - 我想用一组关键词过滤 Lines read form 文本文件
- c++ - 错误:没有用于调用“CreateFileW”的匹配函数
- java - Eclipse 控制台未显示标准错误
- c# - 实体框架自动增量
- java - 如何从 Firebase 数据库获取密码并与 edittext 匹配?
- angular - Angular - 如何更改文本输入状态
- javascript - 如果数组中包含 JavaScript/lodash 中的特定字符/字符串,如何消除数组中的值?