为什么python不能打印100和1000

时间:2017-09-13 08:43:53

标签: python

x=100
def fun2():
    print x
    x=10000
    print x
fun2()

以上程序在分配之前显示局部变量x引用。为什么不打印 100 10000

5 个答案:

答案 0 :(得分:0)

函数中的x是局部变量,并且无法访问您首先定义的其他局部变量,因为它们位于不同的范围内。

global x添加到函数的开头或在函数内定义x。

答案 1 :(得分:0)

您似乎不了解变量范围。

变量x在函数范围中不存在。 您必须在print语句之前放置global x才能访问全局变量x。

x = 1 # Global x
def f():
    x = 2 # function-local x
    print(x) # prints 2
f()
print(x) # prints 1 because it uses the global x which remains unchanged

答案 2 :(得分:0)

如果您希望这样做,您需要在函数内部指定您使用的x变量是使用global关键字在全局范围内的变量。

x=100
def fun2():

    # Add this line
    global x

    print x
    x=10000
    print x
fun2()

答案 3 :(得分:0)

下面的代码将打印x -> 100的值,因为它位于主范围@samba中,但是当你更改它的值时,它没有那样工作,因为它没有在函数中定义

x = 100
def fun2():
  print(x)

fun2()

这不会以同样的方式运作:

x = 100
def fun2():
  print(x)
  x = 1000
  print(x)

fun2()

并通过错误:

  

UnboundLocalError:局部变量' x'在分配前引用


x是一个局部变量,未在函数fun2()中初始化。 您需要了解变量范围,请检查Global and Local variable scope

如果您想全局使用它,请在您的函数中使用global关键字。

答案 4 :(得分:-2)

因为u在函数之前赋值变量。 试试这个

def fun2():
  x=100
  print x
  x=10000
  print x
fun2()

它将输出100和1000