# -*- coding: utf-8 -*-
# 变量的作用域:是指一个变量所产生作用的范围,在哪一个范围内能够被解释器识别。
# NameError: name 'name' is not defined
# print name
# 变量的作用域:全局变量和局部变量
# 一般声明在函数外部的变量,被称为全局变量,作用范围是整个.py文件内,都可以使用,都能被解释器识别到。
# 一般声明在函数内部内部的变量,可以理解为一个局部变量,该变量只能在函数内部使用,超出范围,变量就不能再使用。
# my_list = [1,2,3,4]
# phone_info = [{},{}]
def sum(a,b):
# 形参a,b也是局部变量,只能在函数内部使用。
# c: 就是一个局部变量
c = a + b
print (c)
if c == 30:
c = c + 100
print (c)
sum(10,20)
# print a,b
# 全局变量名和局部变量名相同
name = '张三'
# 默认情况下,如果全局变量名和局部变量名相同都是name,在函数内部是无法识别到函数外部的全局变量的,而会在函数内部声明一个新的局部变量叫name。
def show():
# local(局部的) variable(变量) 'name' referenced(引用) before(在...之前) assignment(声明):因为变量在进行引用时,会采取就近原则,看最近声明的变量在哪。而最近声明的变量是name='李四',所以出现了先引用,后声明的错误。
# print '-----',name
# name = '李四'
# print '===',name
# 如果在函数内部,想修改外部的全局变量(可以理解为重新赋一个值),需要使用global
# global的作用:声明一个变量是已经声明好的全局变量,直接使用即可,可以避免声明一个和全局变量重名的局部变量。
global name
print ('-----',name)
name = '王五'
print ('===',name)
show()
print (name)