python中装饰器详解
在python中,有一个这么东西
开放封闭原则
闭包
Python中的docstring
使用Python的docstring
2017年8月25日 / 11,653次阅读Python
<div>
<div id="wz"><p>程序员一直以来都有一个烦恼,他们只想写代码,不想写文档。他们说:代码就表达了我的思想和灵魂。</p>
<p>小公司相对随意一些,可以先写代码调试,但是最后老板害怕程序员离职造成“青黄不接”,还是会要求补上文档。大公司要求更高,要先写文档,评审通过,然后再开始编码。有的程序员整天都在写文档,苦不堪言。</p>
<p>Python提出了一个方案,叫docstring,来试图解决这个问题。即编写代码,同时也能写出文档,保持代码和文档的一致。</p>
<p>
Python提出的这个方案其实并不新鲜,docstring说白了就是一堆代码中的注释。任何编程语言都有注释的好不好!!不过,Python的docstring可 ...
python 中None,is和==的深入探讨
原文链接:https://www.jianshu.com/p/627232777efd
注: 运行环境:python3.6.6,win10,64位
1. None
None是python中的一个特殊的常量,表示一个空的对象,空值是python中的一个特殊值。数据为空并不代表是空对象,例如[],''等都不是None。None和任何对象比较返回值都是False,除了自己。
>>> L=[]
>>> L is None
False
>>> L=''
>>> L is None
False
None有自己的数据类型NontType,你可以将None赋值给任意对象,但是不能创建一个NoneType对象。
>>> type(None)
<class 'NoneType'>
>>> n=NoneType()
Traceback (most recent call last):
File "<input>", line 1, in <module>
N ...
谈谈对Python和其他语言区别
从三个方面看Python
语言特点
简洁 优雅 省略了各种大括号和分号,还有一些关键字,类型说明
语言类型
解释型语言,运行的时候是一行一行的解释,并运行,所以调试代码很方便,开发效率高.
第三方库
python是开源的,并且python的定位时任由其发展,应用领域很多
比如Web,运维,自动化测试,爬虫,数据分析,人工智能.Python具有非常完备的
第三方库
一句话概括Python语言
Python是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库的一门
弱 ...
python中的接口
什么是接口 ?接口只是定义了一些方法,而没有去实现,多用于程序设计时,只是设计需要有什么样的功能,但是并没有实现任何功能,这些功能需要被另一个类(B)继承后,由 类B去实现其中的某个功能或全部功能。
在python中接口由抽象类和抽象方法去实现,接口是不能被实例化的,只能被别的类继承去实现相应的功能。
个人觉得接口在python中并没有那么重要,因为如果要继承接口,需要把其中的每个方法全部实现,否则会报编译错误,还不如直接定义一个class,其中的方法实现全部为pass,让子类重写这些函数。
当然如果有强制要求,必须所有的实现类都必须按照接口中的定义写的话,就必须要用接口。
方法一:用抽象类和抽象函数实现方法123456789101112131415161718192021222324252627282930#抽象类加抽象方法就等于面向对象编程中的接口from abc import ABCMeta,abstractmethod class interface(object): __metaclass__ = ABCMeta #指定这是一个抽象类 @abstractmetho ...
Python 的解释器种类以及相关特点
CPython当从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广的Python解释器。
IPythonIPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的,好比很多国产浏览器虽然外观不同,但内核其实是调用了IE。
PyPyPyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代码进行动态编译,所以可以显著提高Python代码的执行速度。
JythonJython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPythonIronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
深入python内存管理
本文目录
对象的内存使用
对象引用对象
引用减少
垃圾回收
分代回收
孤立的引用环
总结
面试中被问到python的内存管理,只是说是python有自己的内存管理机制,有自己的垃圾回收机制,却不能详细作答,面试官表示很遗憾。建议我代码的业务逻辑需要想,但是学习需要深入底层,也有助于扩宽自己的知识面,对自己之后的学习路径有帮助,哈哈,感谢面试官帮我指出自己的不足。
回家马上查资料,先解决这个问题。
首先看看各种python常见面试题上的答案:
python内存管理是由私有堆空间管理的,所有的python对象和数据结构都存储在私有堆空间中。程序员没有访问堆的权限,只有解释器才能操作。为python的堆空间分配内存的是python的内存管理模块进行的,核心api会提供一些访问该模块的方法供程序员使用。python自有的垃圾回收机制回收并释放没有被使用的内存供别的程序使用。
如果仅仅问道这,上面的答案也足够了,但是面试官想要了解到更多,可能会衍生一些别的问题,那上面的答案就不够了。
以下内容: 作者:Vamei 出处:http://www.c ...
啥是猴子补丁
Python猴子补丁推荐阅读:python自定义对象转json串
属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。
为什么叫猴子补丁
属性的运行时替换和猴子也没什么关系,关于猴子补丁的由来网上查到两种说法:
1,这个词原来为Guerrilla Patch,杂牌军、游击队,说明这部分不是原装的,在英文里guerilla发音和gorllia(猩猩)相似,再后来就写了monkey(猴子)。
2,还有一种解释是说由于这种方式将原来的代码弄乱了(messing with it),在英文里叫monkeying about(顽皮的),所以叫做Monkey Patch。
猴子补丁的叫法有些莫名其妙,只要和“模块运行时替换的功能”对应就行了。
猴子补丁的用法
1,运行时动态替换模块的方法
stackoverflow上有两个比较热的例子,
consider a class that has a method get_data. This method does an external lookup (on a database or we ...
Python的编码命名规则
项目名
首字母大写,其余小写单词,若多个单词组合可以添加“_”下划线增加可读性
Ui_test
包名、模块名
全部小写字母
package、 module
类名
首字母大写,其它字母小写,若多个单词时,才用驼峰,eg:UserLogin
class Login :
方法名
小写单词,多个单词时,用下划线分隔单词以增加可读性。
def user_login():
参数名
...
PEP8 Python 编码规范
<h1 id="1-pep8"><a name="t0"></a>1. PEP8</h1>
<p><strong>什么是PEP</strong> <br>
PEP是 Python Enhancement Proposal 的缩写,翻译过来就是 Python增强建议书 。 <br>
<strong>PEP8</strong> <br>
译者:本文基于 2013-08-02 最后修改的 PEP8 版本翻译,若要查看英文原文,请参考<a href="http://www.python.org/dev/peps/pep-0008/"
rel="nofollow">PEP ...