关于python范围

时间:2011-04-24 12:07:00

标签: python scope conventions

我已经阅读了关于python范围的内容,并在stackoverflow上浏览了这些问题,但我想澄清一下。

我正在为一个函数提取一段代码,从我习惯的它应该把它用作参数的所有变量。但是,在python中,变量地址是在运行时确定的,因此实际上不需要参数。由于我是python的新手,我想知道是否还有其他含义或约定我应该知道。

x = 5
x += 1
print x

以上代码的以下重构之间是否有任何区别:

def f(x):
  x += 1
  return x

x = 5
x = f(x)
print x

def f():
  x++

x = 5
f()
print x

如果没有,那么python中更常用或更受欢迎的方式之一是什么?

2 个答案:

答案 0 :(得分:3)

如果不是绝对必要,最好不要使用全局变量。也就是说,在第二个示例中,在引用global x之前,您需要x声明。

所以,第一种方式:

  • f接受参数x
  • 增量x
  • 返回x + 1
  • 全球x不受影响

第二种方式:

def f():
  global x
  x += 1

x = 1
f()
  • f没有参数
  • 增加全球x

P.S。 Python没有++运算符。而是使用x += 1

答案 1 :(得分:2)