自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

编程菜鸟iglesias的博客

一个编程菜鸟的学习里程

  • 博客(824)

原创 搜索引擎使用技巧

1、双引号把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配。百度和Google 都支持这个指令。例如搜索: “Python”。2、减号减号代表搜索不包含减号后面的词的页面。使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟着需要排除的词。Google 和bd都支持这个指令。例如:搜索 -引擎返回的则是包含“搜索”这...

2019-08-22 20:53:23 919

原创 Python爬虫基础-HTTP基本原理-HTTP和HTTPS

在网页中,URL的开头会有http或https,这就是访问资源需要的协议类型。有时,我们还会看到ftp、sftp、smb开头的URL,它们都是协议类型。HTTP的全称是Hyper Text Transfer Protocol,中文名叫作超文本传输协议。HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档。HTTP由万维网(World Wide Web ...

2019-08-19 20:44:56 137

原创 Python爬虫基础-HTTP基本原理-超文本

超文本,其英文名称叫作hypertext,我们在浏览器里看到的网页就是超文本解析而成的,其网页源代码是一系列HTML代码,里面包含了一系列标签。浏览器解析这些标签后,便形成了我们平常看到的网页,而网页的源代码HTML就可以称作超文本。...

2019-08-19 20:29:03 67

原创 Python爬虫基础-HTTP基本原理-URI和URL

URI的全称为Uniform Resource Identifier,即统一资源标志符,URL的全称为Universal Resource Locator,即统一资源定位符。URL是URI的子集,也就是说每个URL都是URI(如http://github.com/favicon.ico,它是一个URL,也是一个URI。),但不是每个URI都是URL。URI还包括一个子类叫做URN(如urn:is...

2019-08-19 20:21:50 77

原创 注释

1.3.2 单行注释注释是为增强代码可读性而添加的描述文字。在代码被编译或解释时,编译器或解释器会自动过滤掉注释文字。也就是说,注释的主要作用就是供开发者查看,时开发者更容易理解代码的作用和含义,在代码运行时不会执行注释文字。Python语言提供了单行注释和多行注释两种方式。单行注释以“#”作为开始符,#后面的文字都是注释。print("Hello World!") # 在屏幕上输出“Hel...

2019-08-10 21:56:51 77

原创 第一个Python程序:Hello World

第一个Python程序:Hello World‘’’This is my first python programAuthor: iglesiasCreate Date: 05/30/2019‘’’print(“Hello World”)运行结果: Hello World

2019-08-07 19:27:25 1289

原创 Python语言环境的安装

在Linux,Windows,Macintosh,Android等平台上,都可以安装Python语言环境以支持Python程序的运行,这里仅介绍Windows和Linux两种平台上的Python语言环境安装方法。1.2.1 在Windows平台上安装Python语言环境安装步骤如下:步骤1:双击安装包,选中Add Python3.7 to PATH复选框。步骤2:选择Customize i...

2019-08-05 18:55:07 561

原创 第十九章:模块和包-zipimport:从ZIP归档加载Python代码-数据

19.3.6 数据有些情况下,源模块或包发布时还需要提供非代码的数据。图像、配置文件、默认数据和测试固件就是数据的例子。通常,可以用模块的__path__或__file__属性来查找这些数据文件(相对于代码安装目录)。import osimport example_package# Find the directory containing the imported# package...

2019-08-03 17:51:54 73

原创 第十九章:模块和包-zipimport:从ZIP归档加载Python代码-包

19.3.5 包要确定一个名指示的是一个包还是一个常规的模块,可以使用is_package()。import zipimportimporter = zipimport.zipimporter('zipimport_example.zip')for name in ['zipimport_is_package','example_package']: print(name,impo...

2019-08-03 17:46:38 314

原创 第十九章:模块和包-zipimport:从ZIP归档加载Python代码-源代码

19.3.4 源代码类似于inspect模块,可以用zipimport模块从ZIP归档获取一个模块的源代码(如果归档中包含这个源代码)。在下面的例子中,zipimport_example.zip内只增加了zipimport_get_source.py;其余模块都是作为.pyc文件被增加的。import zipimportmodule = [ 'zipimport_get_code'...

2019-08-03 17:42:34 109

原创 第十九章:模块和包-zipimport:从ZIP归档加载Python代码-访问代码

19.3.3 访问代码get_code()方法从归档中加载一个模块的代码对象。import zipimportimporter = zipimport.zipimporter('zipimport_example.zip')code = importer.get_code('zipimport_get_code')print(code)代码对象与模块读写不同,不过可以用代码对象创建...

2019-08-03 17:36:30 92

原创 第十九章:模块和包-zipimport:从ZIP归档加载Python代码-查找模块

19.3.2 查找模块给定模块全名,find_module()会尝试在ZIP归档中查找这个模块。import zipimportimporter = zipimport.zipimporter('zipimport_example.zip')for module_name in ['zipimport_find_module','not_there']: print(modul...

2019-08-03 17:29:25 45

原创 第十九章:模块和包-zipimport:从ZIP归档加载Python代码-示例

19.3 zipimport:从ZIP归档加载Python代码zipimoprt模块实现了zipimporter类,这个类可以用来查找和加载ZIP归档中的Python模块。zipimporter支持PEP 302中指定的导入hook API;Python Eggs就采用这种方式。通常没有必要直接使用zipimport模块,因为只要归档出现在sys.path中,就可以直接从ZIP归档导入。不过,...

2019-08-03 17:24:36 102

原创 第十九章:模块和包-pkgutil:包工具-包数据

19.2.5 包数据除了代码之外,Python还可以包含数据文件,如模板、默认配置文件、图像以及包中代码使用的其他支持文件。利用get_data()函数,可以采用一种无关格式的方式来访问文件中的数据,所以不论包是作为一个EGG发布,还是作为一个冰冻二进制包的一部分,或者是作为文件系统上的常规文件,都没有任何影响。下面的程序使用get_data()获取模板内容,并打印出来。import pkg...

2019-08-03 16:59:09 53

原创 第十九章:模块和包-pkgutil:包工具-嵌套包

19.2.4 嵌套包对于嵌套包,值需要修改顶级包的路径。import pkgutil__path__ = pkgutil.extend_path(__path__,__name__)__path__.revese()shallow和deep模块都包含一个函数来打印一条消息,指示消息来自己安装版本还是来自开发版本。使用以下测试程序测试这些新包。import nestedimpor...

2019-08-03 16:32:09 135

原创 第十九章:模块和包-pkgutil:包工具-用PKG文件管理路径

19.2.3 用PKG文件管理路径第一个例子展示了如何使用PYTHONPATH中包含的额外目录来扩展搜索路径。此外,还可以使用包含目录名的*.pkg文件来扩展搜索路径。PKG文件类似于site模块使用的PTH文件,其中可以包含要增加到包搜索路径的目录名,每行一个目录名。对于第一个例子中的应用,要为特定于平台的部分建立结构,还有一种方法:对于各个操作系统分布使用一个单独的目录,并包含一个.pkg...

2019-08-03 16:20:35 193

原创 第十九章:模块和包-pkgutil:包工具-包的开发版本

19.2.2 包的开发版本改进一个项目是,开发人员通常需要测试对已安装包的修改。将已安装的版本替换为开发版本可能是个糟糕的想法,因为开发版本不一定正确,而且系统上的其他工具可能会依赖于已安装的包。可以使用virtualenv或venv在开发环境中配置包的一个完全独立的副本,不过对于小的修改,建立这样一个包含所有依赖包的虚拟环境开销可能太大。还有另一种选择,对于正在开发的包,可以使用pkgut...

2019-08-03 16:04:28 115

原创 第十九章:模块和包-pkgutil:包工具-包导入路径

19.2.1 包导入路径extend_path()函数可以用来修改搜索路径,并改变从包导入子模块的方式,这样能结合多个不同的目录,使它们就好像是一个目录一样。借助这个函数,可以用包的开发版本覆盖已安装的版本,或者将平台特定的模块与共享模块结合到一个包命名空间。exted_path()会扫描sys.path来查找目录,其中包括一个子目录,它的的名字基于第二个参数指定的包。这个目录列表与作为第一个...

2019-08-03 15:45:04 173

原创 第十九章:模块和包-importlib:Python的导入机制-加载工具

19.1.4 加载工具importlib中的底层API允许访问加载工具对象。要为一个模块获得一个加载工具,可以使用find_loader()。然后,要获取这个模块,可以使用加载工具的load_module()方法。import importlibloader = importlib.find_loader('example')print('Loader:',loader)m = lo...

2019-08-03 14:16:22 190

原创 第十九章:模块和包-importlib:Python的导入机制-导入模块

19.1.3 导入模块给定一个绝地名或相对名,importlib中的高层API便可以简化导入一个模块的过程。使用一个相对模块名时,可以指定包含这个模块的包作为一个单独的参数。import importlibm1 = importlib.import_module('example.submodule')print(m1)m2 = importlib.import_module('.s...

2019-08-03 14:05:08 93

原创 第十九章:模块和包-importlib:Python的导入机制-模块类型

19.1.2 模块类型Python支持多种类型的模块。打开模块并将其增加到命名空间时,每种类型的模块都需要它自己的处理,另外不同平台对格式的支持也有所不同。例如,在Microsoft Windows下,共享库从扩展名为.dll或.pyd的文件加载,而不是.so。使用解释器的调试(debug)构建版本而不是普通的发行(release)构建版本时,C模块的扩展包也可能改变,因为这些扩展包在编译时可能...

2019-08-03 13:52:58 111

原创 第十九章:模块和包-importlib:Python的导入机制-示例包

第十九章:模块和包19.1 importlib:Python的导入机制importlib模块包括一些函数,这些函数实现了Python的导入机制,可以加载包和模块中的代码。可以利用它动态导入模块,另外一些情况,如果需要导入的模块名在编写代码时是未知的(例如,应用的插件或扩展包),那么此时这个包也很有用。19.1.1 示例包本节中的例子使用了一个名为example的包,其中包含__init__...

2019-08-03 13:41:04 42

原创 第十八章:语言工具-inspect:检查现场对象-命令行接口

18.4.11 命令行接口inspect模块还包括一个命令行接口,可以利用这个接口得到对象的相关细节,而不必在一个单独的Python程序中编写调用。输入是一个模块名,以及输入模块中的对象(可选)。默认输出是指定对象的源代码。如果使用–details参数,则会打印元数据而不是源代码。...

2019-08-03 12:30:06 64

原创 第十八章:语言工具-inspect:检查现场对象-栈与帧

18.4.10 栈与帧除了用于检查代码对象的函数,inspect还包括一些函数可以检查程序执行时的运行时环境。其中大多数函数都处理调用栈,并且操作对象为"调用帧"。帧对象包含当前执行上下文,包括正则运行的代码的引用,正在执行的操作,以及局部和全局变量的值。一般地,这些信息会在产生异常时用来建立traceback;当然,其对于记录日志或调试程序也很有用,因为可以通过查看栈帧来发现传入函数的参数值。...

2019-08-03 12:24:51 29

原创 第十八章:语言工具-inspect:检查现场对象-方法解析顺序

18.4.9 方法解析顺序处理类层次体系的另一个函数是getmro(),它会返回类的一个tuple,其中类的顺序就是扫描这些类的顺序,即使用方法解析顺序(Method Resolution Order,MRO)解析从基类继承的一个属性时要按这个顺序扫描各个类。每个类在这个序列中只出现一次。import inspectimport exampleclass C(object): ...

2019-08-03 12:04:19 51

原创 第十八章:语言工具-inspect:检查现场对象-类层次体系

18.4.8 类层次体系inspect提供了两个方法来直接处理层次体系。第一个方法是getclasstree(),它会基于给定的类及其基类创建一个类似的数据结构。返回的列表中,各个元素可能是一个包含类及其基类的元组,也可能是另一个包含子类元组的列表。import inspectimport exampleclass C(example.B): passclass D(C,...

2019-08-03 11:57:04 41

原创 第十八章:语言工具-inspect:检查现场对象-方法和函数签名

18.4.7 方法和函数签名除了函数或方法的文档,还可以得到可调用方法参数的完整规范,包括默认值。signature()函数会返回一个Signature实例,其中包含函数参数的有关信息。import inspectimport examplesig = inspect.signature(example.module_level_function)print('module_level...

2019-08-03 11:25:49 74

原创 第十八章:语言工具-inspect:检查现场对象-获取源代码

18.4.6 获取源代码如果可以得到一个模块的.py文件,则可以使用getsource()和getsourcelines()获取类或方法的原始源代码。import inspectimport exampleprint(inspect.getsource(example.A))传入一个类时,输出中会包含这个类的所有方法。要获取一个方法的源代码,可以将这个方法引用传入getsourc...

2019-08-03 10:41:55 103

原创 第十八章:语言工具-inspect:检查现场对象-文档串

18.4.5 文档串可以用getdoc()获取一个对象的docstring。返回值是__doc__属性,其中的tab被扩展为空格,并且其缩进保持一致。import inspectimport exampleprint('B.__doc__:')print(example.B.__doc__)print()print('getdoc(B):')print(inspect.getd...

2019-08-03 10:16:39 221

原创 第十八章:语言工具-inspect:检查现场对象-检查实例

18.4.4 检查实例检查实例的方法与检查其他对象相同。import inspectfrom pprint import pprintimport examplea = example.A(name='inspect_getmembers')pprint(inspect.getmembers(a,inspect.ismethod))谓词ismethod()找出示例实例中A的两个...

2019-08-03 10:04:31 33

原创 第十八章:语言工具-inspect:检查现场对象-检查类

18.4.3 检查类类似于检查模块,可以采用同样的方式使用getmembers()扫描类,不过成员的类型不同。import inspectfrom pprint import pprintimport examplepprint(inspect.getmembers(example.A),width=65)由于没有应用过滤,所以输出显示了属性、方法、槽,以及类的其他成员。要查...

2019-08-03 09:58:50 41

原创 第十八章:语言工具-inspect:检查现场对象-检查模块

18.4.2 检查模块第一种对现场对象的检查是为了了解这些对象。可以使用getmembers()发现对象的成员属性。返回的成员类型取决于所扫描对象的类型。模块可能包含类和函数;类可能包含方法和属性等。getmembers()函数的参数是一个待扫描的对象(模块、类或实例)和一个可选的谓词函数,这个谓词函数被用来过滤返回的对象。返回值是一个元组列表,元组中包含两个值:成员名和成员的类型。inspe...

2019-08-03 09:44:30 32

原创 第十八章:语言工具-inspect:检查现场对象-示例模块

18.4 inspect:检查现场对象inspect模块提供了一些函数来了解现场对象,包括模块、类、实例、函数和方法。这个模块中的函数可以用来获取一个函数的原始源代码,查看栈中一个方法的参数,以及抽取对生成源代码库文档有用的信息。18.4.1 示例模块这一节余下的例子都会使用这个示例文件example.py。# This comment appears first# and spans ...

2019-08-03 09:22:54 43

原创 第十八章:语言工具-dis:Python字节码反汇编工具-编译器优化

18.3.7 编译器优化对编译的源代码进行反汇编还能发现一些编译器优化。例如,如果可能,字面量表达式会在编译时尽可能折叠。#!/usr/bin/env python3# encoding: utf-8# Foldedi = 1 + 2f = 3.4 * 5.6s = 'Hello,' + ' World!'# Not foldedI = i * 3 * 4F = f / 2...

2019-08-03 08:58:35 144

原创 第十八章:语言工具-dis:Python字节码反汇编工具-循环的性能分析

18.3.6 循环的性能分析除了调试错误,dis还有助于发现性能问题。检查反汇编的代码对于紧密循环尤其有用,在这些循环中,Python指令很少,但是这些指令会转换为一组效率很低的字节码。可以通过查看一个类Dictionary的不同实现来了解反汇编提供的帮助,这个类会读取一个单词列表,然后按其首字母分组。import disimport sysimport textwrapimport t...

2019-08-03 08:50:33 97

原创 第十八章:语言工具-dis:Python字节码反汇编工具-使用反汇编调试

18.3.5 使用反汇编调试调试一个异常时,有时要查看是哪个字节码带来了问题,这可能很有用。要对一个错误周围的代码反汇编,有多种方法。第一种策略是在交互式解释器中使用dis()报告最后一个异常。如果没有向dis()传入任何参数,那么它会查找一个异常,并显示导致这个异常的栈顶元素的反汇编结果。行号后面的–>指示了导致错误的操作码(opcode)。由于没有定义i变量,所以无法将与这个名关联...

2019-08-03 07:58:04 195

原创 第十八章:语言工具-dis:Python字节码反汇编工具-源代码

18.3.4 源代码处理一个程序的源代码通常比处理代码对象本身更便利。dis中的函数接受包含源代码的字符串参数,并且在生成反汇编或其他输出之前先将它们转换为代码对象。import discode = """my_dict = {'a':1}"""print('Disassembly:\n')dis.dis(code)print('\nCode details:\n')dis...

2019-08-02 21:55:19 225

原创 第十八章:语言工具-dis:Python字节码反汇编工具-类

18.3.3 类可以把类传递到dis(),在这种情况下,会依序反汇编类的所有方法。#!/usr/bin/env python3# encoding: utf-8import disclass MyObject: """Example for dis.""" CLASS_ATTRIBUTE = 'some value' def __str__(self):...

2019-08-02 21:49:51 112

原创 第十八章:语言工具-dis:Python字节码反汇编工具-反汇编函数

18.3.2 反汇编函数遗憾的是,反汇编整个模块时不会自动地递归反汇编函数。#!/usr/bin/env python3# encoding: utf-8def f(*args): nargs = len(args) print(nargs,args)if __name__ == '__main__': import dis dis.dis(f)...

2019-08-02 21:43:04 122

原创 第十八章:语言工具-dis:Python字节码反汇编工具-基本反汇编

18.3 dis:Python字节码反汇编工具dis模块包括一些用于处理Python字节码的函数,可以将字节码"反汇编"为更便于人阅读的形式。查看解释器执行的字节码是一种手控调整紧密循环(tight loop)的好办法,还有助于完成其他优化。这个模块对于查找多线程应用中国的竞态条件也很有用,因为可以用它来估计代码中哪一点线程控制可能切换。警告:字节码的使用是CPython解释器的一个实现细节,...

2019-08-02 21:28:38 207

空空如也

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除