Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在Python 3.7中明确使用变量时不使用_Python_Python 3.x - Fatal编程技术网

为什么在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 和OUT参数)。 因此,我们应该使用此处的返回值将结果传回并将其分配给变量:

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 和OUT参数)。 因此,我们应该使用此处的返回值将结果传回并将其分配给变量:

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)