python常见概念
1. 什么是鸭子类型?
不要检查它是不是鸭子:检查它的叫声像不像鸭子,走起路来像不像鸭子。如果走起路来像鸭子,叫起来也像鸭子,那么它就是鸭子。
鸭子类型是编程语言中动态类型语言中的一种设计风格,一个对象的特征不是由父类决定,而是通过对象的方法决定的。
2. 函数装饰器
装饰器是可调用的对象,其参数时另一个函数(被装饰的函数);函数装饰器用于在源码中“标记”函数,以某种方式增强函数行为。要掌握装饰器,必须理解闭包。
3. 猴子补丁
在运行时修改类或模块,而不改动源码。
4. 协程
微线程,调用子程序,子程序又可以调用其他子程序。协程可以把控制器让步给中心调度程序,从而激活其他的协程。yield视作控制流程的方式,从句法上看与生成器类似,yield通常出现在表达式的右边,调用方可以通过send给协程发送数据。
协程的特点:
- 协程是在单线程里实现任务的切换的。
- 利用同步的方式去实现异步。
- 不再需要锁,提高了并发性能。
5. __init__与__new__
__init__()方法是一种特殊的方法,被称为类的初始化方法,当创建了这个类的实例时就会调用该方法。
__new__是类的真正的构造方法,它创造对象,如果创造的是本类的对象,则__new__将构造的对象传给__init__,__init__对对象初始化。
6. 模块和包
每一个Python代码文件都是一个模块,并可以引用其他的模块中的类、方法等。
一个包含一个或多个.py文件的文件夹是一个包。一个包可以包含模块和子文件夹。注意python包需要有一个__init__.py否则无法引用
python常见概念的更多相关文章
- Python的面向对象常见概念解析
[常见概念简介] 类(class)-- 用来描述某些具有相同属性和方法的对象的集合.格式如下 class test(): class_variable ... def f(self,*arg,**ar ...
- Python常见的错误汇总
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 错误: [错误分析]第二个参数必须为类,否则会报TypeError,所以正确的应 ...
- python常见排序算法解析
python——常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...
- 聊聊JVM(二)说说GC的一些常见概念
转自CSDN 上一篇总结GC的基础算法,各种GC收集器的基本原理,还是比较粗粒度的概念.这篇会整理一些GC的常见概念,理解了这些概念,相信对GC有更加深入的理解 1. 什么时候会触发Minor GC? ...
- Python常见十六个错误集合,你知道那些?
使用python会出现各种各样的错误,以下是Python常见的错误以及解决方法. 1.ValueError: 'Conv2d_1a_3×3' is not a valid scope name 这个是 ...
- Python 常见文件操作的函数示例(转)
转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...
- 转 Python常见数据结构整理
http://www.cnblogs.com/jeffwongishandsome/archive/2012/08/05/2623660.html Python常见数据结构整理 Python中常见的数 ...
- Python常见文件操作的函数示例
# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...
- 一文了解Python常见的序列化操作
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
随机推荐
- 嵌入式CISC模型机设计
一. 课程设计的题目和内容 题目:设计一台嵌入式CISC模型计算机 采用定长CPU周期.联合控制方式,并运行能完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下: 任意输入5个整数, ...
- 5 - ByteBuf-替换ByteBuffer-字节操作
a). 容量可按需增长,类似(StringBuilder) b). 读写模式之间不需要flip切换 c). 读和写使用不同的索引-writerIndex/readerIndex d). 支持方法的链式 ...
- linux php 安装xdebug
我的环境是PHP 5.2.5,下载的xdebug是Xdebug v2.2.1 源码包 PHP 5.3.20用的是Xdebug v2.1.0 {版本一定要匹配} 下载地址为:http://xdebug ...
- ServiceStack.Redis 使用
Redis官网提供了很多开源的C#客户端.例如,Nhiredis ,ServiceStack.Redis ,StackExchange.Redis等.其中ServiceStack.Redis应该算是比 ...
- cocos2d-x-2.2.0_win7+vs2010搭建_eclipse+ndk-r9+cygwin搭建_教程以及编译问题汇总
声明:我是才用c/c++和cocos2d-x的如果有错误欢迎指出 文章内容我亲测过可以通过,同时我也会一直更新内容 感谢那些把自己的东西分享出来的人 原文地址:http://www.cnblogs.c ...
- ajax请求总是返回error的问题
多半是因为返回值格式的问题,在后台返回的应与前台设定的值一直,不然就会进入error,会报404服务器错误,极有可能是后台返回的数据类型不对 public void exitSystem( HttpS ...
- 《Unity預計算即時GI》笔记:三、Clusters和总结
Clusters 叢集,透過修改叢集(Clusters)也是一個降低Unity預計算流程所需要執行的工作數量的好方法.降低叢集數量也能提高執行時的效能. 當採用PRGI來計算場景光照時,Unity會簡 ...
- Java Annotation使用详解
Java Annotation是JDK5.0引入的一种注释机制.它与注释有一定区别,可以理解为代码上的特殊标记,通过这些标记我们可以在编译,类加载,运行等程序类的生命周期内被读取.执行相应的处理.通 ...
- UOJ#210. 【UER #6】寻找罪犯 2-sat
#210. [UER #6]寻找罪犯 链接:http://uoj.ac/problem/210 想法:2-sat模型.每个人拆点,分别表示为犯人.非犯人.每个句供词拆点,分别表示真话.假话.供词与对应 ...
- [转载]AngularJS快速开始
AngularJS快速开始 Hello World! 开始学习AngularJS的一个好方法是创建经典应用程序“Hello World!”: 使用您喜爱的文本编辑器,创建一个HTML文件,例如:hel ...