为什么在Python 3.7中明确使用变量时不使用
我试图创建一个函数,在为什么在Python 3.7中明确使用变量时不使用,python,python-3.x,Python,Python 3.x,我试图创建一个函数,在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"
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
下面是我使用代码的一点背景!不完整
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\u num将它们转换成的内容,但它们打印时与我在代码前面定义的一样
我希望var2
、var3
、var4
等打印到translate\u num将它们转换成的内容,但它们打印时与我在代码前面定义的一样
不能设置参数的值。所以var2=”“
语句毫无意义。您所做的是设置局部变量。但是调用方端的变量不会被更新。假设您使用translate_num(0,5)
调用函数,那么您希望代码做什么?为5
文本指定一个字符串?如果您使用translate_num(0,1+2)
调用它,那么您会将它分配给函数调用吗?因此,这将导致许多奇怪的行为。一些编程语言允许这样的“按需引用”,如C++和C语言(用<代码> REF 和def translate_num(i):
return 'xo'[i-1:i]
然后可以设置如下变量:
var1 = translate_num(top_lef)
var2 = translate_num(top_mid)
var3 = translate_num(top_rig)
# ...
我希望var2
、var3
、var4
等打印到translate\u num将它们转换成的内容,但它们打印时与我在代码前面定义的一样
不能设置参数的值。所以var2=”“
语句毫无意义。您所做的是设置局部变量。但是调用方端的变量不会被更新。假设您使用translate_num(0,5)
调用函数,那么您希望代码做什么?为5
文本指定一个字符串?如果您使用translate_num(0,1+2)
调用它,那么您会将它分配给函数调用吗?因此,这将导致许多奇怪的行为。一些编程语言允许这样的“按需引用”,如C++和C语言(用<代码> REF 和def translate_num(i):
return 'xo'[i-1:i]
然后可以设置如下变量:
var1 = translate_num(top_lef)
var2 = translate_num(top_mid)
var3 = translate_num(top_rig)
# ...
您不能通过参数设置变量,因此如果您在函数中
var2=”“
,它确实不会更新。最接近的等效工作是var1=translate_num(top_lef)
。您不能通过参数设置变量,因此如果您在函数中var2=“
,它没有更新。最接近的工作等价物是var1=translate\u num(top\u lef)
。