Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 如何使用函数交换全局变量_Python_Variables_Swap - Fatal编程技术网

Python 如何使用函数交换全局变量

Python 如何使用函数交换全局变量,python,variables,swap,Python,Variables,Swap,我想做一个函数,如果我给2个变量,它会全局交换它们的值。e、 g.a=1,b=2。我想让它像a=2,b=1那样运行。 这是密码 def swap(n,n2): n,n2 = n2,n print(n,n2) 我还尝试了以下代码: def swap(n,n2): temp = n n = n2 n2 = temp global x global x2 x = n x2 = n2

我想做一个函数,如果我给2个变量,它会全局交换它们的值。e、 g.a=1,b=2。我想让它像a=2,b=1那样运行。 这是密码

    def swap(n,n2):
        n,n2 = n2,n
        print(n,n2)
我还尝试了以下代码:

    def swap(n,n2):
     temp = n
     n = n2
     n2 = temp
     global x
     global x2
     x = n
     x2 = n2
     print(x,x2)

我试过了,但它没有全局交换变量。请提供帮助。

在函数内交换变量只会影响函数的范围

用于访问全局范围字典:

global sabich1
global sabich2

sabich1, sabich2 = 1, 2

def swap(n,n2):
    globals()[n], globals()[n2] = globals()[n2], globals()[n]

swap('sabich1', 'sabich2')

# 2 1
print(sabich1, sabich2)

只需在函数中引用全局变量即可。
请参阅下面的代码

n=1
n2=2
def swap():
全局n,n2
n、 n2=n2,n
打印(n,n2)
互换
打印(n,n2)
输出

1 2
2 1

我相信你可以这样做:

a = 1
b = 2

def swap(var1, var2):
    var1, var2 = var2, var1
    return var1, var2

a, b = swap(a, b)

因为Python是按值传递的,而不是按引用传递的。因此,将形成一个新的参数副本,并将其交换,而不是原始参数。

否。不是Python变量的工作方式。你不想听到的建议是不要使用全局变量,而且在随机函数中更改全局变量看起来不是一个好的做法,这可能会在以后影响你。您的用例是什么?对于您的?
global
访问全局范围来说,
a,b=b,a
还不够吗