首页 > 系统相关 >71:变量的作用域_全局变量_局部变量_栈帧内存分析讲解

71:变量的作用域_全局变量_局部变量_栈帧内存分析讲解

时间:2022-11-19 13:22:25浏览次数:54  
标签:__ 作用域 局部变量 71 print 100 全局变量 栈帧

###变量的作用域(全局变量和局部变量)

变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影响。变量分为:全局变量、局部变量。

全局变量:
1. 在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。
2. 全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。
3. 全局变量一般做常量使用。
4. 函数内要改变全局变量的值,使用 global 声明一下
局部变量:
1. 在函数体中(包含形式参数)声明的变量。
2. 局部变量的引用比全局变量快,优先考虑使用。
3. 如果局部变量和全局变量同名,则在函数内隐藏全局变量,只使用同名的局部变量

# 测试全局变量,局部变量
a = 3    # 全局变量


def test01():
    global a   # 如果要在函数内改变全局变量的值,增加 global 关键字声明
    print(a)   # 打印全局变量 a 的值
    a = 100

    b = 4  # 局部变量
    print(b)


test01()
print(a)

输出结果:

D:\work\python\two\venv\Scripts\python.exe D:\work\python\two\mypy05.py 
3
4
100

【操作】全局变量和局部变量同名测试

a = 100


def f1():
    a = 3  # 同名的局部变量
    print(a)


f1()
print(a)  # a 仍然是 100,没有变化

输出结果

3
100

【操作】 输出局部变量和全局变量

a = 100


def f1(a, b, c):
    print(a, b, c)
    print(locals())  # 打印输出的局部变量
    print("#" * 20)
    print(globals())  # 打印输出的全局变量


f1(2, 3, 4)

输出结果:

2 3 4
{'a': 2, 'b': 3, 'c': 4}
####################
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001EBC5117C40>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\work\\python\\two\\mypy05.py', '__cached__': None, 'a': 100, 'test01': <function test01 at 0x000001EBC5173F40>, 'f1': <function f1 at 0x000001EBC56225F0>}

 

标签:__,作用域,局部变量,71,print,100,全局变量,栈帧
From: https://www.cnblogs.com/yuanzijian/p/16905932.html

相关文章

  • 变量、常量、作用域
    变量、常量、作用域一、变量变量是可以变化的量!Java是一种强类型语言,每个变量都必须申明其类型。Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和......
  • 《XY6761CA 4G核心板》采用了(ARM Mali-G71 GPU)都有哪些功能??
     《XY6761CA4G核心板》为深圳市新移科技有限公司基于联发科MT6761(曦力A22)平台自主研发的一款4G全网通芯片。内部构造功能相当给力,不仅功能强大,性能强劲,运算能力也强。真......
  • P7115 [NOIP2020] 移球游戏
    \(\mathcalLink\)很有意思的题目,并没有想象的那么难。首先,为了方便起见,我们可以认为只有两种颜色的球,记为\(0/1\)。考虑如何将\(0/1\)分开,之后多次重复这一过程,每次......
  • 模块化,作用域的简介
    什么是模块化遵守固定规则,把大文件拆成独立又相互依赖的小模块​好处:1.提高代码复用性2.提高代码维护性3.按需加载 不使用模块化会造成什么不使用模块化,多......
  • 场效应管SI7114DN-T1-GE3(11.7A)SM3323NHQAC-TRG(54A)MOSFET NCH 30V
    1、型号:SM3323NHQAC-TRGSM3323NHQAC描述:N沟道30V54A封装:DFN3x3D-82、型号:SI7114DN-T1-GE3SI7114DN描述:MOSFETN-CH30V11.7APPAK1212-8FET类型:N通道技术:MOSFET(金......
  • 洛谷-1714
    洛谷-1714思路求连续子段,显然需要前缀和处理一下,问题就变成了求出\(i,j\)使得\[\max\{s[i]-s[j]\},i-j>m\]于是利用双端队列从每个区间的max-min中找答案。但......
  • 「CF1713F」Lost Array
    题目点这里看题目。有一个长度为\(n\)的非负整数序列\(\{a_i\}_{i=1}^n\),以此生成一个\((n+1)\times(n+1)\)的非负整数矩阵\(A\)​:对于\(0\lei\len\),有\(A_......
  • Codeforces #816 1715 C
    题面假设我们有一个函数$g(1,n)$表示$i=1\simn-1$中满足$a_i\neqa_{i+1}$的$i$的数量。现在有$m$个询问,每个询问将会让$x\rightarrow......
  • 1710. 卡车上的最大单元数
    1710.卡车上的最大单元数classSolution{publicintmaximumUnits(int[][]boxTypes,inttruckSize){intn=boxTypes.length;Arrays.sort(b......
  • 2714. 左偏树
    题目链接2714.左偏树你需要维护一个小根堆的集合,初始时集合是空的。该集合需要支持如下四种操作:1a,在集合中插入一个新堆,堆中只包含一个数\(a\)。2xy,将第\(x\)......