摘要:
vars() 1、vars()内建函数与 dir()相似,只是给定的对象参数都必须有一个__dict__属性 2、vars()返回一个字典,它包含了对象存储于其__dict__中的属性(键)及值。 3、如果提供的对象没有这样一个属性,则会引发一个 TypeError 异常。如果没有提供对象作为 va 阅读全文
摘要:
多态和多态性 一,多态 多态指的是一类事物有多种形态,一个抽象类有多个子类,因而多态的概念依赖于继承 1.1 动物有多种形态:人,狗,猪 python3: #!/usr/bin/env python #coding:utf8 import abc class Animal(metaclass=abc 阅读全文
摘要:
继承有两种用途 用途1: """ 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名) 且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 三、接口隔离原则:使用多个专门的接口,而不 阅读全文
摘要:
继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 继承可以得到父类定义的方法,子类就可以复用父类的方法 子类继承父类是在定义子类时,将多个父类放在子类之后的圆括号内,如果定义类时,未指定这个类的直接父类,则默认继承ob 阅读全文
摘要:
静态方法和类方法 静态方法和类方法在 Python2.2 中引入。经典类及新式(new-style)类中都可以使用它 通常的方法需要一个实例(self)作为第一个参数,并且对于(绑定的)方法调用来说,self 是自动传递给这个方法的。而对于类方法而言,需要类而不是实例作为第一个参数,它是由解释器传给 阅读全文
摘要:
绑定和方法调用 1、首先,方法仅仅是类内部定义的函数。(这意味着方法是类属性而不是实例属性) 2、其次,方法只有在其所属的类拥有实例时,才能被调用。当存在一个实例时,方法才被认为是绑定到那个实例了。没有实例时方法就是未绑定的 3、最后,任何一个方法定义中的第一个参数都是变量 self,它表示调用此方 阅读全文
摘要:
一、面向对象编程:OOP 面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用,不支持丰富的“面向对象”特性(比如继承、多态) 函数式编程:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象和面向过程的优缺点对比 面向过程 优点: 复 阅读全文
摘要:
本章主题 1、什么是异常 2、Python中的异常 3、探测和处理异常 4、上下文管理 5、引发异常 6、断言 7、标准异常 8、创建异常 9、相关模块 一、什么是异常 错误 1、从软件方面来说,错误是语法或是逻辑上的 2、语法错误指示软件的结构上有错误,导致不能被解释器解释或编译器无法编译。这些错 阅读全文
摘要:
装饰器模式 装饰器模式是设计模式手册中描述的模式。它是一种很明显的修改对象行为的方法,将其封装在一个具有类似接口的装饰对象内。 不要与Python decorator混淆,后者是动态修改函数或类的语言特性。 这是在Python中使用修饰器模式的一个例子。 View Code 输出类似: 100 10 阅读全文
摘要:
装饰器一直是我们学习python难以理解并且纠结的问题,想要弄明白装饰器,必须理解一下函数式编程概念,并且对python中函数调用语法中的特性有所了解,使用装饰器非常简单,但是写装饰器却很复杂。为了讲清楚装饰器,我们讲一个生动的例子如下(由于后文装饰器的代码例子,全程和这个形象生动的说明很一致,所以 阅读全文
摘要:
下面是一些函数编程的练习: mtping.py内容: #!/usr/bin/env python #coding:utf8 import os def ping(ip): result = os.system("ping -c2 %s &>/dev/null" %ip) if result: pri 阅读全文
摘要:
七、递归函数 1、在函数内部,可以调用其他函数。如果一个函数在内部调用自身,这个函数就是递归函数 2、如果一个新的调用能在相同过程中较早的调用结束之前开始,那么该过程就是递归的 3、在操作系统中,查看某一目录内所有文件、修改权限等都是递归的应用 4、使用递归函数需要注意防止栈溢出 递归特性: 1. 阅读全文
摘要:
六、变量作用域 标识符的作用域是定义为其声明在程序里的可应用范围,也就是变量的可见性 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量; E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的; G:global,全局变 阅读全文
摘要:
五、函数式编程 匿名函数与lambda 1、python允许用lambda关键字创造匿名函数 2、匿名是因为不需要以标准的def方式来声明 3、一个完整的lambda语句代表了一个表达式,这个表达式的定义体必须和声明放在同一行 lambda [arg1[, arg2, ... argN]]: exp 阅读全文
摘要:
一、什么是函数 函数基本概念 1、函数是对程序逻辑进行结构化或过程化的一种编程方法 2、将整块代码巧妙地隔离成易于管理的小块 3、把重复代码放到函数中而不是进行大量的拷贝,这样既能节省空间,也有助于保持一致性 4、通常函数都是用于实现某一种功能 函数格式 python定义函数使用def关键字,一般格 阅读全文
摘要:
本章主题 1、什么是模块 2、模块和文件 3、命名空间 4、导入模块 5、导入模块属性 6、模块内置包模块的其他属性 一、模块基本概念 1、模块是从逻辑上组织python代码的形式 2、当代码量变得相当大的时候,最好把代码分成一些有组织的代码段,前提是保证它们的彼此交互 3、这些代码片段相互间有一定 阅读全文
摘要:
六、上下文管理 上下文管理可以包装任意格式的代码块 上下文管理的语法 上下文管理器是一个包装任意代码块的对象。上下文管理器保证进入上下文管理器时,每次代码执行的一致性;当退出上下文管理器时, 相关的资源会被正确回收。 值得注意的是,上下文管理器一定能够保证退出步骤的执行。如果进入上下文管理器,根据定 阅读全文
摘要:
一、文件对象 1、文件对象不仅可以用来访问普通的磁盘文件, 而且也可以访问任何其它类型抽象层面上的"文件". 2、一旦设置了合适的"钩子", 你就可以访问具有文件类型接口的其它对象, 就好像访问的是普通文件一样. 3、内建函数 open() 返回一个文件对象 ,对该文件进行后继相关的操作都要用到它 阅读全文
摘要:
先了解下面几个概念: a container an iterable an iterator a generator a generator expression a {list, set, dict} comprehension 在了解Python的数据结构时,容器(container)、可迭代对 阅读全文
摘要:
五 、深浅拷贝 1.赋值 赋值,只是创建一个变量,该变量指向原来内存地址 2.浅拷贝 浅拷贝,在内存中只额外创建第一层数据, 3.深拷贝 深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化) 引用 VS 拷贝 引用: 1、赋值操作总是存储对象的引用,而不 阅读全文