global关键字修改全局变量

#我们知道全局变量在函数外部,强烈建议不要在函数内部修改全局变量,正常情况下,在函数内部改变全局变量并不影响全局变量的值,举例如下

count = 5

>>> def myfun():
    count = 10 #在函数内部修改了count
    print(count)

>>> myfun() #调用myfun函数并执行,输出count值为10
10
>>> count #可见在外面的count值仍然不变。
5
>>> print (count)
5

#如果确实想要在函数内部改变全局变量的值并且让全局变量永久发生改变,则需要global关键字,方法如下:

>>> count = 5
>>> def myfun():
    global count #global关键字的出现,告诉pyhton 用户要改变全局变量了
    count = 10
    print (count)

>>> myfun()
10
>>> count
10
>>> print (count)
10

时间: 2024-10-17 12:41:04

global关键字修改全局变量的相关文章

python基础 - global关键字及全局变量的用法

python中global关键字主要作用是声明变量的作用域. 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void test(void) { a = 1; // 没有先声明,所以用的是全局的变量a } void test1(void) { int a; a = 2; // 前面声明了,所以用的是局部变量a,对其所做的修改不会影响全局变量a } void main(void) { printf("before: a

飘逸的python - 为什么修改全局的dict变量不用global关键字

比如下面这段代码 s = 'foo' d = {'a':1} def f(): s = 'bar' d['b'] = 2 f() print s print d 为什么修改字典d的值不用global关键字先声明呢? 这是因为, 在s = 'bar'这句中,它是"有歧义的",因为它既可以是表示引用全局变量s,也可以是创建一个新的局部变量,所以在python中,默认它的行为是创建局部变量,除非显式声明global. 在d['b']=2这句中,它是"明确的",因为如果把d

【python】为什么修改全局的dict变量不用global关键字

转自:http://my.oschina.net/leejun2005/blog/145911?fromerr=qnPCgI19#OSC_h4_8 为什么修改字典d的值不用global关键字先声明呢? s = 'foo' d = {'a':1} def f(): s = 'bar' d['b'] = 2 f() print s # foo print d # {'a': 1, 'b': 2} 这是因为,在s = 'bar'这句中,它是“有歧义的“,因为它既可以是表示引用全局变量s,也可以是创建一

python 全局变量的理解(global关键字)

先看代码: 代码一: #!/usr/bin/python #coding:utf8 x = 20 def test(): print 'x= ',x test() 代码一执行结果: x = 20 我们在代码一的基础上稍加修改 代码二: x = 20 def test(): print 'x= ',x x = 2 print 'change x to ',x test() 代码二执行结果: x= Traceback (most recent call last): File "D:\Demo\te

PHP 的 全局变量 global 和 超全局变量 $GLOBAL - 只需一篇你就明白

文章涉及到了 PHP 的 & 引用 ,转载自 http://blog.csdn.net/yanhui_wei/article/details/8246083 +++ 探讨(一)+++++++++++++++++++++++++++++++++++++++ 很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然. 根据官方的解释是 $GLOBALS['var'] 是外部的全局变量$var本身. global $var 是外部$var的同名引用或者指针.(错误:是个别名引用而已,

php的static关键字和全局变量

1.全局变量[其不属于面向对象的思想,因为其放在对象之外的],面向对象有一个特点,其实封装的,php希望其所有的成员都应该放在类中:php的面向对象是基于面向对象的,不是纯粹面向对象的:也就是其可以面向对象编程,也可以不面向对象编程. 使用global定义全局变量,其放在内存的全局区/静态区中,在代码中其是放在class外面的. global $global_a; $global_a=8;//只能这样给全局变量赋值,否则会报错 //在函数中使用全局变量 function test(){ glob

【PHP内核学习】global关键字的解析过程分析

本文github地址: https://github.com/wusuopubupt/phpLib/blob/master/global%E5%85%B3%E9%94%AE%E5%AD%97%E7%9A%84%E8%A7%A3%E6%9E%90%E8%BF%87%E7%A8%8B%E5%88%86%E6%9E%90 |=-----------------------------------------------------------------------=| |=-------------

PHP变量入门教程(3)global 关键字

global关键字 首先,一个使用 global 的例子: 使用 global <?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?> 以上脚本的输出将是 "3".在函数中申明了全局变量 $a 和 $b,任何变量的所有引用变量都会指向到全局变量.对于一个函数能够申明的全局变量的最大个数,PHP 没有限制. 在全局范围内访问变量的第二个办法,是用特殊的 P

PHP 闭包获取外部变量和global关键字声明变量的区别

最近在学习workerman的时候比较频繁的接触到回调函数,使用中经常会因为worker的使用方式不同,会用这两种不同的方式去调用外部的worker变量,这里就整理一下PHP闭包获取外部变量和global关键字声明变量的区别. 闭包 闭包是一个常见的概念,我们通常可以将其与回调函数配合使用,可以使代码更加简洁易读. 闭包可以通过拷贝的方式让函数使用父作用域中的变量.如: $global = 'hello'; $bbb = function()use($global){ echo $global.