python 中局部变量和全局变量的输出混乱

confusion in output of local and global variables in python

我是 python 的新手,正在试验局部变量和全局变量。 'example1' 产生了输出 '6,16,6 ',这是预期的。

x=6
def example1():
  print x
  print (x+10)
  print x  
example1()

在第二个例子中:

x=6
def example2():
   print x
   print (x+10)
print x  
example2()

我预计 o/p 为“6,16,6”,但输出为“6,6,16”。有人可以解释为什么这发生在 'example2()' 吗?

(我认为 'example2' 中的第二个 'print x' 语句指的是全局变量 x(等于 6),因此,我认为 '6,16,6 ' 应该是输出)

在您的第二个示例中,x 的第一个值将为 6。然后您调用方法 example2(),该方法将首先打印 x(即 6)然后 x+10.

所以输出将是:

6
6
16

为了更好地理解,这里是您程序的执行顺序:

x=6
def example2():
   print x
   print (x+10)
print x  # this will be called first, so the first output is 6
example2() # then this, which will print 6 and then 16
x=6
def example2():
   print x +"2nd call"
   print (x+10)
print x+" 1st call"  # This print gets call first
example2()

我认为这解释了。第一个打印首先被调用,因为它的功能失效,并且在功能之前被调用 如果您希望输出为 6,16,6,请按以下方式进行更改

x=6
def example2():
   print x
   print (x+10) 
example2()
print x 

演示局部变量和全局变量。

局部变量 是在函数内部声明的变量。 全局变量 是在函数外部声明的变量。

演示局部变量和全局变量用法的程序。

global_var = 5                     #Global Variable
def add(a,b):
    local_var = a+b                #Local Variable
    print("The sum is",local_var)
    print("The global variable is",global_var)
add(10,20)

输出为:

The sum is 30
The global variable is 5