-
2022-04-24 15:20:04
-
局部变量
在函数内部定义的变量,包括main函数,都是局部变量,局部变量一般存储在动态存储区,函数执行完毕就被清理了。
在复合语句{}中定义的变量,也就是在大括号{}中定义的变量。
局部变量可以和外部变量重名,此时在局部变量作用域内,一直用的是局部变量 -
全局变量
在函数外定义的变量,也就是在main函数前面定义的变量。全局变量的作用域是定义位置到该源程序(.cpp文件)结束的位置。
如果想要在本源程序中,但是在全局变量定义前使用它,需要extern外部变量说明一下;
如果想要在同一个项目但是不同源程序中使用这个全局变量,也要extern外部变量说明一下; -
总结extern用法
全局变量定义之前,或者想要在另一个源文件中用同一个全局变量,需要extern外部说明一下,说明的时候不能初始化和赋值,仅仅是说明一下,extern A; -
static用法
1、static限定全局变量时,让全局变量固定死在本cpp文件中,其他源程序无法extern它;2、static限定局部变量时,局部变量不再存储在动态存储区,而是静态存储区,向全局变量似的了,只在编译的时候初始化一次,以后再初始化都会忽略。
3、static限定函数的时候,函数变成static函数,只能在本源程序中使用;
所以,static不管修饰全局变量,局部变量还是函数,都是把他们限定死在本cpp文件中
更多相关内容 -
-
Python 关键字global全局变量详解
2020-12-06 03:22:09变量作用域一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。全局变量所有作用域都可用...global关键字为了解决函数内使用全局变量的问题,python增加了global关键字, 利用它的特性, 可...变量作用域
一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。
全局变量所有作用域都可用,局部变量只能在本函数可用,变量的使用顺序是,局部变量 > 全局变量, 也就是说:优先使用局部变量
那么问题来了, 如果想在函数内使用全局变量,或改变全局变量的值, 应该怎么做呢?
global关键字
为了解决函数内使用全局变量的问题,python增加了global关键字, 利用它的特性, 可以指定变量的作用域。
global关键字的作用:声明变量var是全局的
代码实例
实例1:
函数优先使用局部变量str = 'global'
def func1():
str = 'local'
print(str)
func1()
print(str)
输出结果local
global
实例2:
在没有局部变量的情况下, 使用全局变量str = 'global'
def func1():
print(str)
func1()
print(str)
输出结果global
global
实例3:
改变全局变量的值, 通过实例1可以看到, 函数内赋值并不能改变全局变量的值,所以需要global关键字str = 'global'
def func1():
global str
str = 'local'
print(str)
func1()
print(str)
输出结果local
local
其他用法
你可以使用同一个global语句指定多个全局变量。
例如global var1, var2, var3
特殊类型
字符串、数字类型是不能被在局部被修改的,除非使用global关键字,但是 列表,字典是可修改,但不能重新赋值,如果需要重新赋值,需要在函数内部使用global定义全局变量
代码实例1:list = ['global', 'pythontab.com']
def func1():
list.append('bbs.pythontab.com')
print(list)
func1()
print(list)
输出结果['global', 'pythontab.com', 'bbs.pythontab.com']
['global', 'pythontab.com', 'bbs.pythontab.com']
发现上面的list并没有使用global但是值却改变了, 说明列表是可以在局部被修改的
代码实例2:list = ['global', 'pythontab.com']
def func1():
list = ['docs.pythontab.com']
print(list)
func1()
print(list)
结果:['docs.pythontab.com']
['global', 'pythontab.com']
局部变量赋值不能改变全局变量的值
-
Python中的全局关键字
2020-12-29 08:05:15以下是有关全局关键字的要点默认情况下,在函数外部声明的变量是全局变量。我们对函数内部的变量使用全局关键字,以便可以对其进行修改。如果没有global关键字,则函数内的变量默认为局部变量。没有glo...python程序中的不同变量具有不同的范围。根据声明的位置,该变量在函数内部是否可以访问。有时我们需要从函数的当前作用域之外修改函数内部存在的变量。在这种情况下,我们将global关键字与变量名一起使用。
以下是有关全局关键字的要点默认情况下,在函数外部声明的变量是全局变量。
我们对函数内部的变量使用全局关键字,以便可以对其进行修改。
如果没有global关键字,则函数内的变量默认为局部变量。
没有global
在以下示例中,我们将看到在没有全局关键字的情况下变量如何发生。这将帮助我们理解全局关键字在下一个程序中有何不同。在下面的示例中,我们尝试在函数内部修改全局变量。但是会发生错误,因为我们无法在函数内部修改全局变量。
示例var = 321
# function to modify the variable
def modify():
var = var * 2
print(var)
# calling the function
modify()
输出结果
运行上面的代码给我们以下结果-UnboundLocalError: local variable 'var' referenced before assignment
有global
现在,我们在函数内部声明变量以及关键字global。这使变量可修改。
示例var = 321
# function to modify the variable
def modify():
global var
var = var * 2
print(var)
# calling the function
modify()
输出结果
运行上面的代码给我们以下结果-642
嵌套函数中的全局
如果必须使用嵌套函数,则必须在内部函数中声明global关键字,以便可以修改变量。
示例def outer_func():
var = 321
# function to modify the variable
def modify():
global var
var = var * 2
print(var)
# calling the function
modify()
outer_func()
输出结果
运行上面的代码给我们以下结果-642
-
Python全局变量与global关键字常见错误解决方案
2020-12-16 23:58:29在Python的变量使用中,经常会遇到这样的错误: local variable ‘a’ referenced before ... 原来,在Python中,a=3 定义了全局变量a,作用域从定义处到代码结束,在 a=3 以下的函数中是可以引用全局变量a的,但如果 -
PHP变量作用域(全局变量&局部变量)&global&static关键字用法实例分析
2020-12-20 05:53:29本文实例讲述了PHP变量作用域(全局变量&局部变量)&global&static关键字用法...除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。然而,在 PHP 函数内部声 -
python中的全局变量(global关键字)
2020-10-05 02:51:19全局变量,顾名思义,就是全局都可以使用的变量。一般定义在函数之外,然后函数内部通过global关键字描述,以区分函数内部的普通变量。一般,需要用到全局变量的地方,我都会把这些函数写成一个类,然后通过类属性...全局变量,顾名思义,就是全局都可以使用的变量。一般定义在函数之外,然后函数内部通过global关键字描述,以区分函数内部的普通变量。一般,需要用到全局变量的地方,我都会把这些函数写成一个类,然后通过类属性变量的方法公用一个变量。不过,很多时候用不着大动干戈去写类。
先看一个简单栗子:
a = 0 # initialize variable a def coo(): global a # call a a += 1 return a for i in range(10): print(coo())
注意,变量只是一个普通变量,首先在函数外部进行初始化,然后在函数内部通过global关键字呼叫这个变量,就可以实现全局变量的功能了。看输出就知道了,变量a会随着函数coo()的不断运行也在不断变化。输出如下:
1
2
3
4
5
6
7
8
9
10
当然,全局变量不仅仅是数,还可以是其他类型的数据结构,比如:a = [] def coo(): global a a += [1] return a for i in range(10): print(coo())
输出如下:
[1]
[1, 1]
[1, 1, 1]
[1, 1, 1, 1]
[1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
-
Python全局变量及Global关键字( Global variable in Python)
2021-09-12 15:34:11简要介绍python中全局变量的一些特性以及global关键字的使用 -
Python 全局变量和局部变量,global 和 nonlocal关键字
2020-12-05 17:22:15全局变量和局部变量全局变量:定义在函数外的变量局部变量:定义在函数内部变量获取变量值时候先获取当前作用域变量名称和变量值,如果没找到到上一层作用域招变量的值,在没有就报错,先获取局部变量,没有获取全局... -
Python中全局变量和局部变量的理解与区别
2021-03-17 17:39:33前言学过编程的人应该对全局变量与局部变量这两个名词并不陌生,Python也同多数编程语言一样,也有全局变量与局部变量的概念但是与其他编程语言又有所不同全局变量与局部变量两者的本质区别就是在于作用域用通俗的话... -
使用extern关键字实现全局变量的应用
2022-06-08 16:42:36使用extern关键字实现全局变量的应用 -
python跨文件使用全局变量的实现
2020-12-16 23:32:04Python 定义了全局变量的特性,使用global 关键字修饰 global key_word 但是他的一大缺陷就是只能本module 中也就是本文件中使用,跳出这个module就不行。 try 1: 使用一个更宏观的思路,全局变量就用全局加载的... -
python函数里引用全局变量
2021-04-26 17:12:33python函数里引用全局变量 python在引用变量的时候尤其要注意变量的作用域,在函数里引用不可变类型变量的时候,函数执行结束后是不会改变全局变量的值的;若想在函数里改变不可变类型全局变量的值时,引用的时候要... -
在函数内部可以通过什么关键字来定义全局变量?
2021-04-10 11:14:00全局变量是可以被本程序所有对象或函数引用的。在函数内部可以通过global关键字来定义全局变量。global 是表示全局变量,当函数中要改变函数外面的变量时候需要用全局变量global来表示全局变量既可以是某对象函数... -
c语言中定义变量的几个关键字
2018-08-23 10:44:21(1)auto关键字在C语言中只有一个作用,那就是修饰局部变量。 (2)auto修饰局部变量,表示这个局部变量是自动局部变量,自动局部变量分配在栈上。(既然在栈上,说明它如果不初始化那么值就是随机的······) (3)... -
c语言全局变量和局部变量问题及解决汇总
2021-01-01 11:05:53要用全局变量,需要使用”::” 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环... -
Python 全局变量与局部变量
2020-12-22 03:04:19开篇 本文通过一个案例说明 Python 中全局变量...全局变量是可以被本程序所有对象或函数引用。 案例 如果按照 Java 的用法描述下面的 Python 代码段以及最终打印结果,那么会是以下这样: 定义了一个全局变量 a, 然 -
C语言关键字extern
2021-05-21 01:27:48修饰对象:全局变量、函数作用:1、提示编译器在其他模块或者其他文件中查找该变量、函数的定义2、可以引用定义在其他文件中的全局变量和函数用法:先声明,再初始化,后调用。1、声明形式:声明时要严格对应声明... -
PHP 全局变量之Global关键字引用解读
2021-04-26 14:35:31本文章来给大家简单的介绍一下关于PHP 全局变量 Global关键字引用介绍,虽说评论跟文章相比,及其的简短,但原理却阐述的很明白,而且浅显易懂,尤其是对于有一些语言基础的人来说,是值得总结的.不卖关子,开始正题:引用... -
关键字static、extern+全局变量与局部变量详解
2022-04-09 21:28:53关键字static、extern+全局变量与局部变量详解 -
从局部变量和全局变量开始全面解析Python中变量的作用域
2020-09-21 15:20:14无论是以类为基础的面相对象编程,还是单纯函数内部变量的定义,变量的作用域始终是Python学习中一个必须理解掌握的环节,下面我们从局部变量和全局变量开始全面解析Python中变量的作用域,需要的朋友可以参考下 -
python全局变量引用与修改过程解析
2021-01-20 04:04:15使用到的全局变量只是作为引用,不在函数中修改它的值的话,不需要加global关键字。如: #! /usr/bin/python a = 1 b = [2, 3] def func(): if a == 1: print(a: %d %a) for i in range(4): if i in b: print... -
C语言 跨文件调用全局变量
2021-12-07 12:02:29使用头文件. 1.c 中 int var; 添加#include “1.h” 1.h 中 extern int var; 2.c 中添加 #include “1.h” -
python 引用全局变量之global
2021-01-28 16:44:491.global在python中叫关键字,不叫命令2.global的作用就是引用全局变量到局部作用域中来3.如果全局变量中没有一个变量a,而函数中写了 globa a这样的语句,那么等于在全局变量中创建了一个变量a4.代码举例:########... -
C++ 中的临时变量,成员变量,全局变量,Static关键字,new关键字,const关键字
2021-08-13 18:09:42临时变量 -
JS声明变量关键字var, let, const
2022-01-26 09:33:291.var的作用域是函数内,因此在一个函数内声明的变量将会在函数退出时被销毁 2.var声明会自动提升到函数作用域顶部 二、let 1.let声明的范围是块作用域 if(true){ var name = 'matt' console.log(name); //... -
JavaScript定义变量关键字var,let和const
2020-11-15 12:11:12JavaScript中的变量是松散类型的,变量可以用来保存任何类型的数据,JavaScript为定义变量提供了3种关键字,分别是var,let和const。let和const是ECMAScript6及以后可以使用 var关键字 作用于函数作用域,可以直接... -
全局变量在整个源程序文件中都有效
2021-06-14 05:59:05在一个C程序中,若要定义一个只允许本源程序文件中在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要... -
python 模块命名规则Python 关键字global全局变量详解
2020-12-05 10:12:40变量作用域一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。全局变量所有作用域都可用...global关键字为了解决函数内使用全局变量的问题,python增加了global关键字, 利用它的特性, 可... -
python中在方法中引用全局变量
2020-02-13 16:26:48在外面定义了一个变量 xxx ,然后在python的一个函数里面引用这个变量,并改变它的值,结果报错local variable ‘xxx’ referenced before assignment,代码如下: xxx = 23 def PrintFileName(strFileName): if...