python全局变量

Python中全局变量的引用与修改之格式影响

ε祈祈猫儿з 提交于 2019-12-04 01:13:31
先来看下面的代码及执行结果: a = 1 b = [2,3] def nums(): a = 2 b[0] = 0 print(a) print(b) print(a) print(b) nums() print(a) print(b) 结果: 1 [2, 3] 2 [0, 3] 1 [0, 3] 对上面结果的分析: 函数 nums() 中重新定义了一个变量 a ,这个 a 是局部变量,与外面的全局变量没有关系,而全局变量 列表 b 直接被引用过来进行修改了,同样是全局变量为什么会有差别呢?   因为格式问题引发了歧义,容器类型的数据如,列表,字典,他们的修改和创建书写格式全然不同,不会引发奇异,而数字,字符串类型变量的定义和修改都是用 = 链接,引发了格式上的歧义,所以,当Python解释器遇到函数中的 “a = 2”这种格式时,不知道是 “引用全局变量a修改为2” 还是 “定义一个等于 2 的变量” ,从而引发歧义,为了确保全局变量对代码其他部分产生更小的影响,Python默认为第二种——重新定义一个变量,来避免修改全局变量对整体代码产生其他未知影响。 综上所述: 本质:格式引发的歧义问题 运用:对于字典,列表不会因为格式问题引发歧义的,不用管他;对于数字,字符串来说,当引用与创建发生歧义时,Python解释器默认创建新的变量,若不想创建,只是想修改全局变量

Python--函数

雨燕双飞 提交于 2019-12-03 21:39:41
以下方法均在python解释器中进行了测试,读者复制代码时,记得去掉注释符。 #!/usr/bin/env python # -*- coding: utf-8 -*- # ******************************一:函数的定义和目的****************************** # 函数的格式如下: # def 函数名(参数1,参数2,参数3....参数n): # 函数体 #定义: # 1:"def"为函数的开始,在声明建立函数时一定要用def;def所在的这一行被称为函数头; # "test"为函数名称,注意名称最好要有一定意义,比如可以从名称看出来函数作用; # "(a,b)"为参数列表,通常称为形参; # ":"注意冒号,表示函数头结束; # 2: "c = a + b"从这一行起就是函数体,函数体是缩进了4个空格的代码块 # 3:"return" 是函数的关键字,意思是返回一个值;return作用:1:返回一个值;2:结束函数的运行,并返回到调用这个函数的地方 # 4:"res = add_fun(2,3)"调用函数,并传入两个参数(实参) # def add_fun(a,b): # c = a + b # return c # res = add_fun(2,3) # 目的: # 1:降低编程难度 2:代码重用 3:实现特定功能 # *

python全局变量与局部变量

故事扮演 提交于 2019-12-03 05:17:59
了解全局变量和局部变量之前,我们先来了解一下 作用域 a = 10 def func():   b = 20   def inner():     c = 30 以上面这个程序为例:打印a,b,c    可以看到只有a打印 10 ,b和c都报错,这就是作用域的问题。 我们把新创建的一个.py文件看做事一个模块,在模块内定义的变量,如a,就是这个模块的全局变量,作用于全局,不论在哪都可以调用, 但是b和c 是定义在函数内部的,我们叫做局部变量,只能作用在函数内部。 我们在看一个问题   func和inner函数可以调用变量a 么?   func函数可以调用变量c么? 答案是:a是全局变量,可以在任意地方调用        但是func函数不可以调用c,这时候我们把func看做一个整体,那么inner就是在func内部定义的函数,c也就是inner内部的变量 总结:变量定义在全局可以在任何地方调用,定义在函数内部,只能在函数内使用。 变量查找顺序: LEGB 局部作用域>外层作用域>当前模块中全局>python内置作用域; 在来说关于全局和局部变量的两个两个方法: global , nonlocal 。 直接上例子吧: 我们可以看到,局部定义了a, 那么我们直接调用a就会报错, 只有在定义后调用才会打印,并且全局变量的a值不会改变 如果我现在想在局部名称空间改变a的值该怎么做呢

python学习第五天--函数进阶

╄→гoц情女王★ 提交于 2019-12-03 02:41:02
局部变量与全局变量下面代码中,old_price,rite为全局变量,final_price为局部变量 globals() 声明全局变量,在函数内可修改函数外的变量 内嵌函数:函数当中嵌套函数 闭包:闭包条件 1 在一个外函数中定义了一个内函数。 2 内函数里运用了外函数的临时变量。 3 并且外函数的返回值是内函数的引用。 来源: https://www.cnblogs.com/w-6711/p/11774369.html

python-多线程共享全局变量

有些话、适合烂在心里 提交于 2019-12-03 01:53:58
import threadingimport time# 定义一个变量nums = [11, 22]def test1(nums): nums.append(33) print('-----------in test1 num={}---'.format(nums))def test2(): print('-----------in test2 num={}---'.format(nums))def main(): t1 = threading.Thread(target=test1, args=(nums,)) # args 传递参数,要用元组的形式 t2 = threading.Thread(target=test2) t1.start() time.sleep(1) t2.start() time.sleep(1) print('-----------in main Thread num={}---'.format(nums))if __name__ == '__main__': main() 来源: https://www.cnblogs.com/fuyouqiang/p/11770320.html

初学Python――函数

匿名 (未验证) 提交于 2019-12-02 22:51:30
一、函数定义 1 def name( parameters): #没有参数括号内可以为空 2 "函数描述" #其实就是注释 3 <代码块> 4 return [expression] #没有返回值可以不加[]内容,也可以省略return def是定义函数的关键字,name是函数名,parameters是形参 函数描述可以省略,但建议要有 expression是返回值,可以没有返回值,也可以没有retrun。 函数在return处结束。 二、传参过程 这里需要了解几个名词:位置参数、关键参数、默认参数 1.位置参数 :按照函数形式参数的顺序传递参数 def func(x,y): print("x={0} y={1}".format(x,y)) func(3,4) func(4,3) #输出: x=3 y=4 x=4 y=3 可以发现,位置参数的使用相当于C语言当中的函数调用方式。 2.关键参数 : 指的是在传递参数时,不必考虑形式参数的具体先后顺序,以“形式参数=实际参数”的形式传参。 def func(x,y): print("x={0} y={1}".format(x,y)) func(y=3,x=4) #输出结果: x=4 y=3 3.默认参数 :如果函数有默认参数,允许调用函数时不对默认参数传参(这时形参为默认值) def text2(x,y=2):#y为默认参数,非必须传递

python中函数使用

匿名 (未验证) 提交于 2019-12-02 22:51:30
一、传参 def op_file(file_name,content=None) 1、必传参数(file_name) 2、默认值参数(content=None) 如果不传,直接给函数体传None,函数调用时不传content也没关系 二、变量 1、全局变量 在函数以外定义的变量是全局变量 执行顺序 先局部变量,局部变量找不到的情况下走全局变量 2、修改全局变量 a.在局部内想修改全局变量,需要使用global声明下你要变更的是全局变量 3、函数中可以调用其他函数 三、常量(不会变的变量是常量eg:PI,使用大写字母定义) 来源:博客园 作者: 遇见最好的你_juan 链接:https://www.cnblogs.com/wangyajuanjuan/p/11563704.html

Python之函数、形参与实参、函数的返回值、局部变量及全局变量及练习

匿名 (未验证) 提交于 2019-12-02 22:51:30
文章目录 一、函数的定义 1、定义一个函数 2、形参 3、实参 二、形参 1、位置参数 2、默认参数 3、可变参数 4、关键字参数 三、函数的返回值 四、局部变量和全局变量的作用域 1、 全局变量 2、局部变量 五、练习 一、函数的定义 函数是组织好的,可以重复使用的,用来实现单一或者相关联功能的代码段,其实函数就是可以 实现某一功能的代码块 ,下次使用的时候直接调用就可以了 函数能提高应用的模块性,和代码的重复利用率 python提供了很多内建函数,比如print(),但用户也可以自己创建函数,被叫做 自定义函数 1、定义一个函数 定义一个函数的简单的规则: 在python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后在缩进块中编写函数体,函数的返回值用return语句返回,不带表达式的return相当于返回None 如果不主动调用函数的话,函数使不会执行的 。 2、形参 定义函数的时候的变量叫形参, 形参可以任意起名 3、实参 真实的数据信息,调用函数时传递的参数,实参 这里的tom、lily就是实参。 二、形参 形参又分为:位置参数、默认参数、可变参数、关键字参数 1、位置参数 实参和形参的个数必须保持一致 ,最好按位置传参。 如果位置不对应就要指定说明。 2、默认参数 形参和实参可以不一致 ,如果不想使用默认的参数

python关键字global和nonlocal总结

匿名 (未验证) 提交于 2019-12-02 22:51:30
函数中使用全局变量 a = 100 b = 200 def func (): def sub (): return b return a + b + sub () 执行 fun ()后返回值为: 500 a , b 使用的是全局变量的值。 函数中覆盖全局变量 a = 100 b = 200 def func (): a = 10 b = 20 def sub (): return b return a + b + sub () 执行 fun ()后返回值为: 50 a , b 使用的是局部变量的值。 函数中修改改全局变量 a = 100 b = 200 def func (): global a b = 20 def sub (): nonlocal b b = 10 sub () return a + b 执行 fun ()后返回值为: 110 a 使用的是全局变量 a = 100 的值, b 使用的是函数 func 修改后 b 的值 10 。 总结 函数中global关键字用于申明变量为全局变量。 闭包函数中使用nonlocal关键字申明变量为外层函数的变量。 来源:博客园 作者: BRYANT_2019 链接:https://www.cnblogs.com/bryant24/p/11437392.html

Python函数初识二

匿名 (未验证) 提交于 2019-12-02 22:11:45
在Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。 在Python程序中创建、改变、查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域。python的作用域是静态的,在源代码中变量名被赋值的位置决定了该变量能被访问的范围。即Python变量的作用域由变量所在源代码中的位置决定。 在Python中并不是所有的语句块中都会产生作用域。 只有当变量在Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念。 举个栗子: def greet_people(): name = 'jack' print("Hello, "+name) # 在函数内打印变量 print(name) # 在函数外打印变量 ===》 直接出错 greet_people() 上述代码的运行结果为: C:\Python37\python3.exe D:/pythoncode/Exercise/Exer8/Exer8-13.py Traceback (most recent call last): File "D:/pythoncode/Exercise/Exer8/Exer8-13.py", line 5, in <module> print(name