python中的全局变量和局部变量

#!/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() 的作用完全相同。
处在这个俗世,也得让自己变得更好吧
原文地址:https://www.cnblogs.com/butaileng7/p/14534279.html