test_module2.py: # -*- coding: utf-8 -*-"""测试 模块变量的作用域 总结:1 其他模块的变量,在当前模块的任何地方,包括函数都可以通过 模块.变量 访问,包括读写2 本模块的变量, 在函数中访问时,第一次出现是读操作,直接使用 第一次出现是写操作,必须gloabl 声明 否则变成局部变量3 在本模块头部引用外部模块变量,所有函数都能访问. 如果只在本模块的某个函数中导入外部模块变量 只在该函数中访问, 在本模块.本模块其他函数中都无法…
1. 变量作用域 Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的.变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称.Python 的作用域一共有4种,分别是: L (Local) 局部作用域 E (Enclosing) 闭包函数外的函数中 G (Global) 全局作用域 B (Built-in) 内建作用域 以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,…
一,module模块和包的介绍 1,在Python中,一个.py文件就称之为一个模块(Module). 2,使用模块的好处? 最大的好处是大大提高了代码的可维护性 其次,编写代码不必从零开始,我们编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块 另外,使用模块还可以避免函数名和变量名冲突.相同名字的函数和变量完全可以分别存在不同的模块中,因此,不必考虑名字会与其他模块冲突.但是也要尽量不与内置函数名字冲突. 3,种类 1)python标准库 2)第三方模块 3)自…
# -*- coding: UTF-8 -*- """ 测试进程使用 multiprocessing.Process 使用: 1. 准备一个函数<fun>,子进程要执行的代码放这里面 def run_proc(name,l_list) 2. 以函数名.tuple(函数参数1,函数参数2...),创建Process 对象 p = multiprocessing.Process(target=run_proc, args=(str(i),l) ) 3. 启动子进程,这…
  #!/usr/bin/pythonn # -*- coding: UTF-8 -*- """ 学习线程 thread 总结: 1. 主线程退出,所有子线程都退出 2. 子线程 能直接读取外部变量 3. thread.start_new_thread 调用后,立即执行并发代码了,不像有些模块,执行完后,要调用start方法才执行并发代码,xxxx.yyyy().start() 使用: 调用 thread.start_new_thread( <func>,(par…
目录 一.requests模块二.Beautifulsoup模块 一.requests模块 1.介绍 Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务. Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pyth…
代码: # -*- coding: utf-8 -*- """ 多线程并发同步 ,使用信号量threading.Semaphore 逻辑: 多个线程,对同一个共享变量 ,加1,并且各自打印加1前.加1后的值 总结: 信号量也提供acquire方法和release方法,每当调用acquire方法的时候,如果内部计数器大于0,则将其减1, 如果内部计数器等于0,则会阻塞该线程,知道有线程调用了release方法将内部计数器更新到大于1位置 1. 个人感觉,信号量类似锁,创建2个大…
总结: 默认父线程跑完,子线程并不会马上退出,不像 thread.start_threadXXXX 父线程跑完了,并没有退出,一直在那里 线程启动速度很快,不占多少开销,不到1毫 秒 代码: # -*- coding: utf-8 -*- """ 学习 并发 linux下执行 """ from threading import Thread from multiprocessing import Process import time impor…
# -*- coding: utf-8 -*- """ 获得线程, 进程 ID,NAME 总结: """ import threading import psutil import os import datetime # 1 获取线程ID,NAME t = threading.currentThread() #线程ID print('Thread id : %d' % t.ident) #线程NAME print('Thread name :…
# -*- coding: UTF-8 -*- """ 测试运算符重载 加法 总结: python 运算符表达式其实都是调用 类中方法 __xxx__ + <---> __add__ (由python 编译器 自己设置好了映射关系) 后续假如想自定义运算符 <符号> <---> __<自定义>__ 不知道如何玩 """ class Point: def __init__(self,x,y): sel…
# -*- coding: UTF-8 -*- """ 测试传入类名 总结: 似乎python里面的一切东西都可以当参数传入 函数或者方法 """ class Ab: a=3 class Ac: a=0 class MyFactory: def get_instance(self,ins): # ins 输入 类 return ins() mf = MyFactory() obj1 = Ab() obj2 = mf.get_instance(Ab…
函数一般是从第一行代码开始执行,结束于return语句.异常.或者函数所有语句执行完毕.一旦函数将控制权交还给调用者,就意味着全部结束.函数中做的所有工作以及保存在局部变量中的数据都将丢失.再次调用这个函数时,一切将从头创建. 定义函数 >>>def myfun(x,y): #定义函数名 print(x+y) #函数体 >>>myfun(3,4) #调用函数 12 当函数体中存在循环且每次需输出时,使用print来打印多个结果 函数的返回值 >>>de…
1  队列读写 # -*- coding: utf-8 -*- """ 多进程 共享 队列 multiprocessing.Process 逻辑: 一个进程往队列写数据,一个进程从读写读数据 写进程完了后,主进程强行结束读进程 使用: 1. 创建队列 q = multiprocessing.Queue() ,默认无限大小,可以指定大小 2. 把队列 q 当参数传给 子进程 执行代码, 猜测应该不能通过全局变量的方式访问 3. 在子进程中读写队列数据 q.put(<dat…
# -*- coding: UTF-8 -*- """ 多线程同时读队列 总结: 1. 会阻塞 if self._jobq.qsize() > 0 进入逻辑,此时被其他线程把数据取完了, 在data = self._jobq.get() 阻塞 2. 需要学习锁使用 逻辑: * 主线程提前往队列写好所有数据 * 子线程读取队列数据,没有就退出线程 """ import Queue import threading import time im…
总结: 类装饰器, 本质是一个函数,输入一个类,返回一个类 Case 1 啥都没做 def deco(in_class): return in_class @deco class Cat: def __init__(self,age): print "flag1" self.age = age print "flag11" def display(self): print "flag2" print(self.age) print "f…
# -*- coding: UTF-8 -*- """ 测试 类的静态方法,类方法 @staticmethod @classmethod 总结: 1. self 指向类对象, cls 指向类,两个名字都可以随意取,一般取大家公认的这个两个 2. staticmethod 方法体可以调用 同类的 类.类属性. 类.静态方法.类.类方法 类外可以调用 类.静态方法 3. classmethod 方法体可以条用 同类的 cls.类属性.cls.静态方法.cls.类方法 当然也可以通…
目录 目录 软件系统 变量的作用域 高级语言对数据类型的使用过程 作用域的产生 作用域的类型 Llocal局部作用域 Eenclosing嵌套作用域 Gglobal全局作用域 Bbuilt-in内置作用域 变量名解析LEGB法则 实例说明 对变量的引用 对变量的修改 global关键字 nonlocal关键字 命名空间和作用域的区别 软件系统 系统 Ubuntu 14.04 软件 Python 2.7.3 IPython 4.0.0 变量的作用域 在Python程序中创建.改变.查找变量名时,都…
在一个程序中使用变量名时,Python创建.改变或者查找变量名都是在所谓的命名空间中进行的.作用域指的就是命名空间. Python中的变量名在第一次赋值时已经创建,并且必须经过赋值后才能够使用.由于变量名最初没有声明,Python将一个变量名 被赋值的地点关联为一个特定的命名空间.也即是说,在代码中给一个变量赋值的地方决定了这个变量将存在于哪个命名空间,也 就是它可见的范围. 函数除了打包代码之外,还为程序增加了一个额外的命名空间曾:在默认的情况下,一个函数的所有变量名都是与函数的命名空间 相关…
本节内容 模块分类: 好处: 标准库: help("modules") 查看所有python自带模块列表 第三方开源模块: 自定义模块: 模块调用: import module from os import rmdir from module.xx.xx import xx as rename from module.xx import * (不推荐) 注意: 模块一旦被调用,就相当于执行了另为一个py文件里的代码. 自定义模块: 查找模块路径依据:当前目录范围.sys.path --…
Python学习系列(六)(模块) Python学习系列(五)(文件操作及其字典) 一,模块的基本介绍 1,import引入其他标准模块 标准库:Python标准安装包里的模块. 引入模块的几种方式: i)引入模块:import   moduleName ii)引入模块下的函数:from moduleName import function1,function2,…… iii)引入模块下的所有函数:from moduleName import * 使用模块里的函数的方法: moduleName.…
Python 变量作用域的规则是 LEGB LEGB含义解释:L —— Local(function):函数内的名字空间E —— Enclosing function locals:外部嵌套函数的名字空间(例如closure)G —— Global(module):函数定义所在模块(文件)的名字空间B —— Builtin(Python):Python内置模块的名字空间 一.Builtin 该部分其实主要是 Python 自带的 内置命名空间,主要是 内置函数,异常类 等.可以通过 dir(__…
python中变量作用域包括: L (Local) 局部作用域,函数内部声明但没有使用global的变量E (Enclosing) 闭包函数外的函数中,def或者lambda的本地作用域G (Global) 全局作用域,函数中使用global声明的变量或在模块层声明的变量B (Built-in) 内建作用域,python的内置类和函数等 当在函数中使用未认证的变量名时,将依照L->E->G->B的顺序搜索. Python除了def/class/lambda 外,其他如: if/elif/…
再谈变量作用域与变量引用 by:授客 QQ:1033553122 module3.py #!/usr/bin/env python # -*- coding:utf-8 -*-   __author__ = 'shouke'   var = 'var_in_module3'   module2.py #!/usr/bin/env python # -*- coding:utf-8 -*-   __author__ = 'shouke' from module3 import var   clas…
一.函数及变量的作用   在python程序中,函数都会创建一个新的作用域,又称为命名空间,当函数遇到变量时,Python就会到该函数的命名空间来寻找变量,因为Python一切都是对象,而在命名空间中,都是以字典形式存在着,这些变量名,函数名都是索引,而值就是,对应的变量值和函数内存地址.在python中可以用globals()查看全局变量,locals()局部变量. >>> global_v = '全局变量' >>> def func(): ... local_v =…
Python 模块 模块定义 随着程序越来越庞大,需要分隔成几个文件:也需要能在不同文件中复用函数.类和变量,而不是拷贝代码.为了满足这些需要,Python提供了模块. 简单来说,模块就是一个保存了Python代码的文件(.py 文件).文件名 就是 模块名 加上  .py 后缀.(这边学习使用Notepad++ 保存的 .py 文件即为模块) 模块能定义函数,类和变量.模块里也能包含可执行的代码.模块的模块名(作为一个字符串)可以由全局变量 __name __ 得到. 例如,在当前目录下创建一…
变量作用域标识符的作用域是定义为其声明的可应用范围,或者即是我们所说的变量可见性.也就是,我们可以在程序的那个部分去访问一个制定的标识符.全局变量与局部变量定义在函数内的变量有局部作用域,在一个模块中最高级别的变量有全局作用域.全局变量的一个特征是除非被删除掉,否则它们将存活到脚本运行结束,且对于所有的函数,他们的值都是可以被访问的,然而局部变量,就像它们存放的栈,暂时地存在,仅仅只依赖于定义它们的函数现阶段是否处于活动.当一个函数调用出现时,其局部变量就进入声明它们的作用域.在那一刻,一个新的…
1.函数作用域介绍 函数作用域 Python中函数作用域分为4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的. G:global,全局变量,即模块级别定义的变量,在模块开始.函数外定义的变量. B:built-in,系统固定模块里的变量,比如int,bytearray等. 搜索变量的优先级顺序依次是:局部作用域 > 外层作用域 > 当前模块中全局作用域 > python内置作…
----------------------------------------------------------------------------- 前言------------------------------------------------------------------------------ Python 的变量名解析机制也称为 LEGB 法则,具体如下:当在函数中使用未确定的变量名时,Python 搜索 4 个作用域:本地作用域(L),之后是上一层嵌套结构中 def 或…
1.前言 Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的. 2.变量作用域 变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称.Python的作用域一共有4种,分别是: L (Local) 局部作用域 E (Enclosing) 闭包函数外的函数中 G (Global) 全局作用域 B (Built-in) 内建作用域 以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去…
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Python是纯粹的自由软件,源代码和解释器CPython遵循 GPL(GNU General Public License)协议.关于python的哲学:python崇尚:"优雅"."明确"."简单",Python是用最简单最优雅最明确的方法来解决问题…