一、什么是作用域?
#什么是作用域?变量能使用的范围
#作用域就是指一个变量产生的作用范围,在哪一个范围内可以被使用
#NameError: name 'abc' is not defined
#变量的作用域:全局变量作用域,局部变量作用域
#全局变量:一般在函数,代码块外部,声明的变量,都被称为全局变量。作用范围是整个.py文件内,都可以使用,都能被解释器识别到。顶格写
#局部变量:一般在函数内部或代码块内部声明的变量,被称为局部变量,这类变量只能在函数\代码块内部使用,超出范围不可用
二、举个小例子
def sum(a,b):
# 形参a,b也是局部变量,只能在函数内部使用。
# c: 就是一个局部变量
c = a + b
print c
if c == 30:
c = c + 100
print c
sum(10,20)
三、全局变量名和局部变量名相同时,可以有如下操作
# 全局变量名和局部变量名相同
#全局变量如何在函数内部进行赋值操作
name = '张三'
# 默认情况下,如果全局变量名和局部变量名相同都是name,在函数内部是无法识别到函数外部的全局变量的,而会在函数内部声明一个新的局部变量叫name。
def change_name():
# local(局部的) variable(变量) 'name' referenced(引用) before(在...之前) assignment(声明):因为变量在进行引用时,会采取就近原则,看最近声明的变量在哪。而最近声明的变量是name='李四',所以出现了先引用,后声明的错误。
# 如果在函数内部,想修改外部的全局变量(可以理解为重新赋一个值),需要使用global
# 如果不使用global引用全局变量,是可以获取这个全局变量值得 例如:
# s=name
# 但是不能够改变全局变量值,一旦修改,相当于创建了一个和全局变量重名的局部变量
# name='李四'
# global的作用:声明一个变量是已经声明好的全局变量,直接使用即可,可以避免声明一个和全局变量重名的局部变量。
# 告诉这个函数,在函数内部使用name变量是一个全局变量
global name
# print(name)
name = '李四'
print(name)
change_name()
print(name)