#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/3/14 16:56 # @Author : banzhu # @File : variable.py """ 作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用 局部变量(Local Variable):定义在函数内部的变量是局部变量,局部变量的作用范围只能在函数内部生效,不能在函数外被引用 全局变量(Global Variable):在整个函数中都可以访问到,但不要试图在函数内部修改全局变量的值, 因为Python会创建一个新的局部变量替代(名字与全局变量相同),但真正的全局变量是不动的 """ # 局部变量: def myfun(): a = 0 # 局部变量 a += 1 print("myfun a = ", a) def myfun2(): a = [1, 2, 3] # 局部变量 a = [i + 1 for i in a] print("myfun2 a = ", a) # 定义全局变量的方式有2种 # 1.在函数体外定义的变量,一定是全局变量 # 整数,字符串等不可更改 a = 1 # a为全局变量 def myfun(): a = 2 # 局部变量 a += 1 print("函数中 a = ", a) myfun() print("函数外 a = ", a) # 2.在函数体内定义全局变量,使用global关键字对变量进行修饰后,该变量会变为全局变量 # 利用global关键字 引用全局变量 a = 1 def myfun(): global a # 使用a之前用global a += 1 print("函数中 a = ", a) myfun() print("函数外 a = ", a) # 获取指定作用域(全局或局部)内所有的变量 # 1.globals()函数。返回一个包含全局范围内所有变量的字典,该字典中的每个键值对,键为变量名,值为该变量的值 # 2.locals()函数。在函数内部调用 locals() 函数,会获得包含所有局部变量的字典;而在全局范文内调用 locals() 函数,其功能和 globals() 函数相同 # 3.vars()函数。vas(object)返回一个指定 object 对象范围内所有变量组成的字典,如果不传入object 参数,vars() 和 locals() 的作用完全相同。