“Python变量的作用域”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
第27行: 第27行:
  
  
  <nowiki>n = 2 #n是全局变量
+
  <nowiki>n=2
 +
print(n)
 
def multiply(x, y = 10):
 
def multiply(x, y = 10):
 
     global n
 
     global n
 +
    n=1
 
     return x*y*n
 
     return x*y*n
 +
  
 
s = multiply(99,2)
 
s = multiply(99,2)
print(s)</nowiki>
+
print(s)
 +
print(n)</nowiki>
  
 
上例中,变量n是全局变量,在函数multiply() 中使用时需要在函数内部使用global声明,定义 后即可使用。
 
上例中,变量n是全局变量,在函数multiply() 中使用时需要在函数内部使用global声明,定义 后即可使用。
第40行: 第44行:
  
  
  <nowiki>n = 2 #n是全局变量
+
  <nowiki>n=2
 +
print(n)
 
def multiply(x, y = 10):
 
def multiply(x, y = 10):
 
+
 
     n = x*y
+
     n=1
    return n # 此处的n不是全局变量
+
    return x*y*n
 +
 
  
 
s = multiply(99,2)
 
s = multiply(99,2)
 
print(s)
 
print(s)
print(n)   #不改变外部全局变量的值 </nowiki>
+
print(n) </nowiki>

2020年3月20日 (五) 00:27的版本

变量的作用域

根据程序中变量所在的位置和作用范围变量分为局部变量和全局变量,局部变量仅在函数内部,且作用域也在函数内部,全局变量的作用域跨越多个函数。

局部变量

def multiply(x, y = 10):
    z = x*y
    return z

s = multiply(99,2)
print(s)
print(z)

变量z是函数内部使用的变量,当函数调用后,变量z将不存在,所以会发生如下错误。

198
Traceback (most recent call last):
  File "D:/teaching/python/视频/Python语言程序设计/第五周视频课件/5-1.py", line 7, in <module>
    print(z)
NameError: name 'z' is not defined

全局变量

全局变量指在函数之外定义的变量,在程序执行全过程有效。

全部变量在函数内部使用时,需要 提前使用保留字global声明,语法形式如下:

 global <全局变量>


n=2
print(n)
def multiply(x, y = 10):
    global n
    n=1
    return x*y*n


s = multiply(99,2)
print(s)
print(n)

上例中,变量n是全局变量,在函数multiply() 中使用时需要在函数内部使用global声明,定义 后即可使用。

如果未使用保留字global声明,即使名称相同, 也不是全局变量。


n=2
print(n)
def multiply(x, y = 10):

    n=1
    return x*y*n


s = multiply(99,2)
print(s)
print(n)