这两天看到同事的一个小工具,用的是模块式开发,也就是俗称的插件开发,用的是反射+接口的方式实现的。感觉挺好的,也就学习了一下,写个小Demo,在此记录下。 一、写接口类 接口类是所有模块的基础,因为让主程序去寻找模块,就是通过反射来找到继承此接口的相关项目,也就是后期包含继承此接口类的DLL文件。 ,因为各个模块都是UserControl,需要窗体来承载。 需要的方法大概有两个,寻找目录的层级、创建相应的模块。 + ex.Message); } } 2、创建相应模块 当存在一个DLL时,就生成一个模块,两个DLL时就要有两个模块,以此类推…… /// <
functools模块可以作用于所有的可以被调用的对象,包括函数 定义了__call__方法的类等 1、functools.cmp_to_key(func) 将比较函数(接受两个参数,通过比较两个参数的大小返回负值 function(返回一个值用来比较或者排序的可调用对象), 例如: sorted(iterable, functools.cmp_to_key(locale.strcoll)) def cmp1(n1, n2) : return n1 - n2 a = [1, 6, 2, 9] print(sorted(a, key=functools.cmp_to_key(cmp1))) 2、@functools.lru_cache ' return func(*args, **kwargs) return update_wrapper(call_it, func) @wrap2 def hello2(): __doc__ print hello2() print hello2.__name__ print hello2.
shelve模块:类似于字典的操作方式去操作特殊的字符串(不讲,可以课下了解)。 当然序列化模块中使用最多的的就是json模块,那么接下来,我们讲一下json与pickle模块。 1.1 json模块 json模块是将满足条件的数据结构转化成特殊的字符串,并且也可以反序列化还原回去。 刚才也跟大家提到了pickle模块,pickle模块是只能Python语言识别的序列化模块。 可参考processon流程图:https://www.processon.com/diagraming/5cb8278ce4b085d0107b2d38 2. os模块 os模块是与操作系统交互的一个接口 3. sys模块 sys模块是与python解释器交互的一个接口,这个模块功能不是很多,练习一遍就行。
Angular 应用是模块化的,Angular 有自己的模块系统,叫做 Angular 模块 or NgModules。 模块 . 每个 Angular 应用至少有一个模块——根模块,通常叫做 AppModule。 imports - 声明这个模块的组件模版需要的、其他模块声明导出的类。 providers - 这个模块的服务创建器,是全局服务集合的一部分,可以被应用的任意部位访问到。 根模块没有理由export任何东西,因为其他组件不需要import根模块。 通过引导一个根模块启动一个应用。 在 JavaScript 中, 每个 文件就是一个模块,所有定义在文件中的对象都属于模块。模块定义公有对象通过关键词export标记这些对象。
在我们的使用中,我们常常需要将时间转换为字符串,用来作为文件的名字或者用于加密字符的输出等等。例子:
一.引用 引用模块的语法格式为: -- 把模块中所有函数加入全局命名空间 import <module> -- 部分引用 import <module> (fn1, fn2) -- 引入数据类型及其值构造器 ,比如把功能相近的函数放到同一个模块中 例如二叉树的模块定义: module BTree -- 声明要暴露出去的函数及数据类型 ( Tree , singleton , add , fromList , , Read, Eq) singleton x = Node x EmptyTree EmptyTree 注意: 强制要求模块名与文件名相同,所以对应的文件名应为BTree.hs 模块声明必须位于首行( 模块具有树形层级结构,模块可以有子模块,子模块还可以有子模块…… 对目录结构及命名有要求,例如: . ├── main.hs └── Math ├── Number.hs └── Vector.hs 包名要求首字母大写(Math),子模块文件名要与子模块名保持一致,大小写敏感性与环境有关(比如OSX不敏感) 三.标准库模块 标准库内置了很多强大的函数,可以通过Hoogle查看用法示例、类型声明、甚至源码
当访问域名 "discuss.leetcode.com" 时, 同时也会隐式访问其父域名 "leetcode.com" 以及 "com" 。 示例 1: 输入:nums = [1,2,2,3,1] 输出:2 解释: 输入数组的度是 2 ,因为元素 1 和 2 的出现频数最大,均为 2 。 连续子数组里面拥有相同度的有如下所示: [1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2] 最短连续子数组 [2, 2] 的长度为 2 ,所以返回 2 。 示例 2: 输入:nums = [1,2,2,3,1,4,2] 输出:6 解释: 数组的度是 3 ,因为元素 2 重复出现 3 次。
1、PdfFileReader 构造方法: PyPDF2.PdfFileReader(stream,strict = True,warndest = None,overwriteWarnings = 默认是 True warndest : 记录警告的目标(默认是 sys.stderr) overwriteWarnings(bool):确定是否 warnings.py 用自定义实现覆盖 Python 模块 getDocumentInfo() 检索 PDF 文件的文档信息字典 getFields(tree = None,retval = None,fileObj= None) 如果此 PDF 包含交互式表单字段 import PdfFileReader,PdfFileWriter filer=r"C:\Users\________________MRlv\Desktop\Python项目开发实战+第2版.pdf 文档中处于的页码 PageNumber=pdfFileReader.getPageNumber(pageobj) print("PageNumber={}".format(PageNumber)) 2、
向服务器发送数据 会对服务器产生影响 通常都是 post 请求 请求参数不会在 url 上显示 就像百度翻译翻译一样他是一个动态加载数据,有道翻译是 ajax 请求,真正的 URL 在 XHR 里 2 User-Agent 用户代理 作用就是伪装爬虫记录用户数据,这会作为反反爬的第一步,更好的获取完整的 HTML 源码 3 urllib 模块 urllib 是 python 的一个内置的网络请求模块 ,内置函数还有很多如 time random 等 有时候需要结合我们的 requests 模块去综合使用 urlretreieve 参数说明 url: 外部或者本地的 url 遇到这样的如何获取源码 第一种方法 'ascii' codec can't encode characters in position 51-53: ordinal not in range(128) 报错信息 urllib 网络请求模块在想一个携带了中文的 方法就是转成 16 进制 urlencode 传入参数类型:字典 功能:将存入的字典参数编码为 URL 查询字符串,即转换成以 key1=value1&key2=value2 的形式 enquote 对
在文档中有 filter 相关模块的介绍, 本文来介绍其中的 addr,header 和 log addr 模块 addr 模块非常简单,它是用来获取远程客户端的地址的。使用起来非常简单。 header 模块是与请求 HTTP 标头交互,可以帮助我们提取请求头中的参数。 我们使用 header 模块来读取相关的请求头。 (实际上 addr 模块取得的地址是反向代理所在的IP地址)。 log 模块 在第一篇文章的时候,我们引入了两个日志模块 log 和 pretty_env_logger 。现在是时候排上用场了。我们来配一下日志输出。
Python有给开发者们提供好的日志模块,下面介绍一下logging模块: 首先,我们先来看一个例子: import logging logging.debug('This is debug message 2.os模块 os模块也是我们平时工作中很常用到的一个模块,通过os模块调用系统命令,获得路劲,获取操作系统的类型等都是使用该模块。 下面我们就了解一下os模块。 shell命令的一个模块; 调用系统命令command模块提供了三种方法:cmd代表系统命令。 home/admin' a = commands.getoutput(cmd) print(type(a)) print(a) 结果: <type 'str'> nginx.conf test.py (2) (2)sys.stdin \ stdout \ stderr 功能:stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象。
模块分为三种: 内置模块 开源模块 自定义模块 一:自定义模块 1.定义模块:即编写具有某一功能的python文件ftp.py,ftp既模块名 ftp.py def get(file_path): print('download file %s' %file_path) def put(file_path): print('download file %s' %file_path) 2. sys.path 中的某个目录中,如: /usr/lib/python2.7/site-packages/ 2.导入模块(同自定义模块方式) 3:paramiko i:下载安装 # pycrypto, ) # 结果放到stdout中,如果有错误将放到stderr中 print(stdout.read().decode()) # 关闭连接 ssh.close() 注意:以sshclient方式运行交互式命令需要增加两行 否则返回False os.path.join(path1[, path2[, ...]])
第三方的日志框架种类繁多,常用的如 slf4j、log4j2、logback 等等,而且每种框架的日志级别定义、打印方式、配置格式都不尽相同。 在 MyBatis 的核心处理流程中,包括 SQL 拼接、SQL 执行、结果集映射等关键步骤,都是需要打印日志的,如果在各处都显式地进行 log.info(“xxx”) 打印肯定不太合适,那么如何将日志打印优雅地织入到核心流程中 集成第三方日志框架 了解了适配器模式之后,我们来看下 MyBatis 是怎么把它灵活运用于日志模块中的。 extends Log> logConstructor; //按照顺序依次尝试加载Log实现类 //优先级为:slf4j -> commons-logging -> log4j2 -> log4j ...省略非必要代码 } 可以看到,在 LogFactory 的静态代码块中,按照指定的顺序尝试加载 Log 实现类,具体的优先级为:slf4j -> commons-logging -> log4j2
模块 在Apache的服务目录里,会有apache模块配置文件 ? 可以通过如下命令查看所有在linux上运行的apache模块: ?
单次压缩和解压缩 单次压缩(bz2.compress) In [40]: compressStr = 'use bz2 module to compress string' In [41]: bz2.compress bz2压缩文件 从字符串创建一个bz2压缩文件 #! py [root@control tmp]# ls -l /tmp/test2.bz2 -rw-r--r-- 1 root root 90 Jul 26 09:04 /tmp/test2.bz2 [root # 使用shutil模块的copyfileobj方法实现类文件对象复制 #! /usr/bin/env python import bz2 compressFilename = r'/tmp/test3.bz2' f = bz2.BZ2File(compressFilename
[+] httplib2功能介绍:http://code.google.com/p/httplib2/ httplib2实例页面:http://code.google.com/p/httplib2/w/ list httplib2问题提交:http://code.google.com/p/httplib2/issues/list 好吧,我觉得官方的样例还是比较全的,这里就直接贴一下吧。 进口 袜子 ##需要第三方模块 httplib2.debuglevel = 4 h = httplib2.Http(proxy_info = httplib2.ProxyInfo ” ) ====================================================================================== 下面是我自己对模块功能的尝试 另外,httplib2模块本身还有其它的对象或属性,可以通过print dir(httplib2)来查看
当前环境python3.5 ,windows10系统 Linux系统安装 在线安装,会自动安装scrapy模块以及相关依赖模块 pip install Scrapy 手动源码安装,比较麻烦要自己手动安装 scrapy模块以及依赖模块 安装以下模块 1、lxml-3.8.0.tar.gz (XML处理库) 2、Twisted-17.5.0.tar.bz2 (用Python编写的异步网络框架) 3、Scrapy 基于协议模块) 10、cffi-1.10.0.tar.gz (用于Python调用C代码的外部函数接口) 11、asn1crypto-0.22.0.tar.gz (快速的ASN一个解析器和序列化器) 12 221.win32-py3.5.exe pywin32-221.win-amd64-py3.5.exe 在线安装 pip install scrapy 手动源码安装,比较麻烦要自己手动安装scrapy模块以及依赖模块 安装以下模块 1、lxml-3.8.0.tar.gz (XML处理库) 2、Twisted-17.5.0.tar.bz2 (用Python编写的异步网络框架) 3、Scrapy-1.4.0.tar.gz
一、模块的搜索顺序1》Python解释器在导入模块时,对模块文件的搜索顺序:搜索顺序:搜索当前目录指定模块名的文件,如果有就直接接导入如果没有,就会到系统目录搜索指定模块名的文件提醒:在开发时给文件起名 文件和模块同名报错验证:新建一个random.py文件和模块同名,可以看出PyCharm也给我们提示了(randinth函数有个灰色底纹),此时再来运行文件,报错2》 模块内置属性__file__Python 分别从两种情况来看看完整路径:1.random.py文件存在,和模块名冲突情况,如下图:2删除random.py文件:点击右键打开面板点击Delete,出现一个对话框点击OK后继续出现一个面板,这里我们点击 :import md_模块print("+" * 30)执行测试导入文件代码结果:可以看出,模块中的输出代码也被打印出来了,模块可以看作是工具包,模块向外界提供工具——全局变量、函数、类。 __main__)代码演练:1.在模块中执行__name__,执行结果永远都是__main__图片2.被其他文件导入,在md_测试导入文件中执行结果——模块文件名:图片3.让测试代码只有在执行模块时才会被运行利用执行模块
简介 介绍模块打包工具 2. 什么是模块 关于模块和模块化,百度百科有一段引用自《Java应用架构设计:模块化模式与OSGi》一书的解释非常好: 在系统的结构中,模块是可组合、分解和更换的单元。 模块打包工具 顾名思义,就是用来分辨模块的依赖关系,组织模块代码的工具。对于webpack模块,有着更广泛的类型支持,不仅仅是js模块而已。 (虽然本质上还是先翻译成js模块,但是形式上支持各种类型的模块)。 js模块化? js模块化的介绍 模块(modules) webpack模块化原理-ES module 深入理解JS模块 百度百科-模块化 JavaScript模块化(ES Module/CommonJS/AMD
-------------------------------------------------------------------------------------------------------------------------------- 本文来自网友投稿 作者:PG,一个待毕业待就业的二流大学生。 ---------------------------------------------------------------------------------------------