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

来自CloudWiki
跳转至: 导航搜索
(创建页面,内容为“==变量的作用域== 根据程序中变量所在的位置和作用范围变量分为局部变量和全局变量,局部变量仅在函数内部,且作用域也…”)
 
第19行: 第19行:
 
NameError: name 'z' is not defined</nowiki>
 
NameError: name 'z' is not defined</nowiki>
 
===全局变量===
 
===全局变量===
全局变量只在函数之外定义的变量,在程序执行全过程有效。全局变量在函数内部使用时,需要提前使用保留字global声明。
+
全局变量指在函数之外定义的变量,在程序执行全过程有效。
 +
 
 +
全部变量在函数内部使用时,需要 提前使用保留字global声明,语法形式如下:
 +
 
 +
  <nowiki>global <全局变量></nowiki>
 +
 
 +
 
  
 
  <nowiki>n = 2  #n是全局变量
 
  <nowiki>n = 2  #n是全局变量
第28行: 第34行:
 
s = multiply(99,2)
 
s = multiply(99,2)
 
print(s)</nowiki>
 
print(s)</nowiki>
 +
 +
上例中,变量n是全局变量,在函数multiply() 中使用时需要在函数内部使用global声明,定义 后即可使用。
 +
 +
如果未使用保留字global声明,即使名称相同, 也不是全局变量。
 +
 +
 +
<nowiki>n = 2  #n是全局变量
 +
def multiply(x, y = 10):
 +
 
 +
    n = x*y
 +
    return n # 此处的n不是全局变量
 +
 +
s = multiply(99,2)
 +
print(s)
 +
print(n)  #不改变外部全局变量的值 </nowiki>

2020年3月14日 (六) 10:29的版本

变量的作用域

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

局部变量

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  #n是全局变量
def multiply(x, y = 10):
    global n
    return x*y*n

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

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

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


n = 2  #n是全局变量
def multiply(x, y = 10):
   
    n = x*y
    return n # 此处的n不是全局变量

s = multiply(99,2)
print(s)
print(n)   #不改变外部全局变量的值