python全局变量

关于python的全局变量和局部变量的理解(分解问题来排错)

蓝咒 提交于 2019-12-02 08:57:17
list_1 = [ ] num = input ( "请输入数字:" ) while num != "" : list_1 . append ( num ) num = input ( "请输入数字:" ) #上述5条代码是重点要理解:定义一个全局变量list_1 """ 求和 """ def sum_1 ( ) : sum = 0 for i in list_1 : sum += eval ( i ) return sum """ 求长度 """ def len_1 ( ) : count = 0 for i in list_1 : count = count + 1 lenth = count return lenth """ 平均数 """ def averange ( ) : aver = sum_1 ( ) / len_1 ( ) return aver print ( averange ( ) ) #float """ 方差 """ def fang_cha ( ) : fc = 0 for i in list_1 : #之所以不是list_2,是因为它是局部变量,若写list_2,则list_2是空列表 a = float ( i ) b = a - averange ( ) # print(type(averange())) fc += pow ( b , 2 )

[PYTHON] 全局变量

*爱你&永不变心* 提交于 2019-12-02 04:25:17
应该尽量避免使用全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,程序员乙同时也要使用_a,这时可能导致程序中的错误。这种错误是很难发现和更正的。 全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。 但是某些时候,全局变量能够解决局部变量所难以解决的问题。事物要一分为二。 python里面全局变量有两种灵活的用法: 1 声明法 在文件开头声明全局变量variable, 在具体函数中使用该变量时,需要事先声明 global variable,否则系统将该变量视为局部变量。 CONSTANT = 0 (将全局变量大写便于识别) def modifyConstant() : global CONSTANT print CONSTANT CONSTANT += 1 return if __name__ == '__main__' : modifyConstant() print CONSTANT 2模块法(推荐) 把全局变量定义在一个单独的模块中: #gl.py gl_1 = 'hello' gl_2 = 'world' 在其它模块中使用 #a.py import gl def hello_world() print gl

Python函数作用域

烂漫一生 提交于 2019-12-01 16:03:50
1 作用域   函数在编程语言中是作为一个整体而存在,Python中的函数是一等公民的对象,于是在函数里定义的函数(嵌套函数)或者一些变量,就有其作用的范围。如下代码: 1 def fn(): 2 a = 5 3 print(a)   执行上面代码会出现NameError: name 'a' is not defined错误,原因就在于函数体中的a的作用范围只是在函数内。 1.1 局部变量和全局变量   函数的参数以及函数体中定义的所有变量,共同构成了该函数的本地命名空间,所有的变量被称为该函数的本地变量,这些变量的作用范围只是在函数中有用,所以也称其为局部变量。不是本地变量的变量被称为全局变量。   系统每次执行一个函数时,就会创建新的本地(局部)命名空间。该命名空间代表一个局部环境。解析这些名称时,解释器将首相搜索局部命名空间。如果灭有找到匹配的名称,就会搜索全局命名空间。如果在全局命名空间中也找不到匹配值,最终会检查内置命名空间。如果仍然找不到,就会抛出NameError异常。   在函数的本地变量与全局变量名称相同时,则函数体内的该名称指的是本地变量,而不是全局变量。如下示例: 1 a = 40 2 def foo(): 3 a = 13 4 foo() 5 print(a) 6 # a仍然是40   Python中赋值即定义

Python线程

半城伤御伤魂 提交于 2019-12-01 07:06:44
线程,有时被称为轻量进程,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程不拥有私有的系统资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。 线程是程序中一个单一的顺序控制流程。进程内有一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指令运行时的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。Python多线程用于I/O操作密集型的任务,如SocketServer网络并发,网络爬虫。 现代处理器都是多核的,几核处理器只能同时处理几个线程,多线程执行程序看起来是同时进行,实际上是CPU在多个线程之间快速切换执行,这中间就涉及到上下问切换,所谓的上下文切换就是指一个线程Thread被分配的时间片用完了之后,线程的信息被保存起来,CPU执行另外的线程,再到CPU读取线程Thread的信息并继续执行Thread的过程。 线程模块 Python的标准库提供了两个模块:_thread和threading。_thread 提供了低级别的、原始的线程以及一个简单的互斥锁,它相比于 threading 模块的功能还是比较有限的。Threading模块是

4 局部变量和全局变量

心已入冬 提交于 2019-12-01 05:23:28
局部变量和全局变量 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数。 当全局变量与局部变量同名时,在定义局部变量的函数内,局部变量起作用;在其它地方全局变量起作用。 name = "python" def change_name(name): print("before change:",name) name = "linux" print("after change", name) change_name(name) print(name) # 输出 before change: python after change linux python 不用传name 值到函数里,不可以在函数里调用外面的变量 name = "python" def change_name(): name = "linux" print("after change", name) change_name() print(name) # 输出 after change linux python 作用域 作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。 如何在函数里修改全局变量? def change_name():

(转)Python多任务之线程

穿精又带淫゛_ 提交于 2019-12-01 02:08:34
https://www.cnblogs.com/yifchan/p/python-1-41.html 多任务介绍 我们先来看一下没有多任务的程序 import time def sing(): for i in range(5): print("我喜欢唱") time.sleep(1) def dance(): for i in range(5): print("我喜欢跳") time.sleep(1) def main(): sing() dance() pass if __name__ == "__main__": main() 运行结果:花了十秒钟多,只能按顺序执行,无法一起/同步执行 我喜欢唱 我喜欢唱 我喜欢唱 我喜欢唱 我喜欢唱 我喜欢跳 我喜欢跳 我喜欢跳 我喜欢跳 我喜欢跳 我们再来看一下使用了多线程的程序 import time import threading def sing(): for i in range(5): print("我喜欢唱歌") time.sleep(1) def dance(): for i in range(5): print("我喜欢跳舞") time.sleep(1) def main(): t1 = threading.Thread(target=sing) t2 = threading.Thread(target=dance)

python中函数使用

折月煮酒 提交于 2019-11-30 12:29:54
一、传参 def op_file(file_name,content=None) 1、必传参数(file_name) 2、默认值参数(content=None) 如果不传,直接给函数体传None,函数调用时不传content也没关系 二、变量 1、全局变量 在函数以外定义的变量是全局变量 执行顺序 先局部变量,局部变量找不到的情况下走全局变量 2、修改全局变量 a.在局部内想修改全局变量,需要使用global声明下你要变更的是全局变量 3、函数中可以调用其他函数 三、常量(不会变的变量是常量eg:PI,使用大写字母定义) 来源: https://www.cnblogs.com/fandonghua/p/11586589.html

【Python笔记】Python基础 —— 作用域

。_饼干妹妹 提交于 2019-11-30 06:16:09
作用域 . 描述 作用域是针对变量而出现。当变量被赋值的时候,变量当前的位置就决定了变量能够被访问到的范围,这个范围就叫变量的作用域 官方文档: A scope is a textual region of a Python program where a namespace is directly accessible. “Directly accessible” here means that an unqualified reference to a name attempts to find the name in the namespace. . 四种作用域(LEGB) a. L (Local):最内层,包含局部变量,比如一个函数/方法内部 b. E (Enclosing):包含了非局部也非全局的变量 c. G (Global):当前脚本的最外层,比如当前模块的全局变量 d. B (Built-in):包含了内建的变量/关键字等 . 作用域的规则 a.本地作用域是函数内部属于本函数的作用范围,因为函数可以嵌套函数,嵌套的内层函数有自身的内层范围 b.嵌套函数的本地作用域是属于内层函数的范围,不属于外层 c.全局作用域是文件级别的,或者说是模块级别的,每个py文件中处于顶层的变量都是全局作用域范围内的变量 d.内置作用域是预先定义好的,在__builtins__模块中

python中函数使用

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-30 05:45:06
一、传参 def op_file(file_name,content=None) 1、必传参数(file_name) 2、默认值参数(content=None) 如果不传,直接给函数体传None,函数调用时不传content也没关系 二、变量 1、全局变量 在函数以外定义的变量是全局变量 执行顺序 先局部变量,局部变量找不到的情况下走全局变量 2、修改全局变量 a.在局部内想修改全局变量,需要使用global声明下你要变更的是全局变量 3、函数中可以调用其他函数 三、常量(不会变的变量是常量eg:PI,使用大写字母定义) 来源: https://www.cnblogs.com/wangyajuanjuan/p/11563704.html

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

99封情书 提交于 2019-11-30 02:09: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] 在学习过程中有什么不懂得可以加我的 python学习交流扣扣qun,784758214 群里有不错的学习视频教程、开发工具与电子书籍。 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容 对上面结果的分析: 函数 nums() 中重新定义了一个变量 a ,这个 a 是局部变量,与外面的全局变量没有关系,而全局变量 列表 b 直接被引用过来进行修改了,同样是全局变量为什么会有差别呢?   因为格式问题引发了歧义,容器类型的数据如,列表,字典,他们的修改和创建书写格式全然不同,不会引发奇异,而数字,字符串类型变量的定义和修改都是用 = 链接,引发了格式上的歧义,所以,当Python解释器遇到函数中的 “a = 2”这种格式时,不知道是 “引用全局变量a修改为2” 还是 “定义一个等于 2 的变量” ,从而引发歧义,为了确保全局变量对代码其他部分产生更小的影响,Python默认为第二种——重新定义一个变量,来避免修改全局变量对整体代码产生其他未知影响。