# -*- coding:utf-8 -*-
什么是作用域?就是指一个变量产生作用的范围,在哪一个范围内可以被使用
执行以下代码,会报错
# print(abc)
# NameError: name 'abc' is not defined
#
变量的作用域:全局变量作用域,局部变量作用域
# 全局变量:(顶格写)一般在函数、代码块外部声明的变量,被称为全局变量,作用域范围,是从声明的位置开始往下,一直到文件的末尾都可以使用
b = 10
1.局部变量:一般在函数内部或代码块内部声明的变量,被称为局部变量,这类变量只能在函数\代码块内部使用,超出范围不可用
# 代码块,a重新引用了一次
a=20
if 1==1:
a=10
print(a)
输出结果: a=10
2.函数中的局部变量,重新创建了一个c,两个不同的c,第二个C只在函数内部使用,在外部无法使用
c=20
def eat():
#这个变量c的作用范围是函数内部
c=10
eat()
print(c)
输出结果:c=20
3. 全局变量如何在函数内部进行赋值操作,情况1
# 全局变量name
# name = '张三'
# def change_name():
# #局部变量name
# name = '李四'
# change_name()
# print(name)
输出结果:张三
4.情况2
# name = '张三'
# def change_name():
# print(name)
# change_name()
输出结果:张三
5.情况3: # s=name
# print(s)
代码中注释掉的这两句和未注释的代码执行的结果一样
global :全局 引用一个全局变量,避免出现一个和全局变量重名的局部变量
name = '张三'
# 默认情况下,如果全局变量的名称和局部变量名称相同,例如都是name,局部变量会将全局变量覆盖掉
def change_name():
#如果不使用global引入全局变量,是可以获取这个全局变量=值得 例如:
# s=name
# print(s)
#但是不能修改全局变量值,一旦修改,相当于创建了一个和全局变量同名的局部变量
# name = '李四'
#global :全局 引用一个全局变量,避免出现一个和全局变量重名的局部变量
#告诉这个函数,在函数内部使用name变量是一个全局变量
global name
name = '李四'
print(name)
change_name()
print(name)
输出:李四
李四