元类引入 在多数语言中,类就是一组用来描述如何生成对象的代码段,在python中同样如此,但是在python中把类也称为类对象,是的,你没听错,在这里你只要使用class关键字定义了类,其解释器在执行时就会创建一个对象,但是这个对象比较特殊,它可以创建自己的实例对象(像其他语言一样).你可以对它进行下面的操作: 1. 你可以将它赋值给⼀个变量 2. 你可以拷⻉它 3. 你可以为它增加属性 4. 你可以将它作为函数参数进⾏传递 动态创建类 听起来python在这方面跟一些语言的差别了吧,没错它还可…
一:知识储备 exec exec:三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定,默认为globals() 参数三:局部作用域(字典形式),如果不指定,默认为locals() exec的应用: #可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中 g={ 'x':1, 'y':2 } l={} exec(''' global x,z x=100 z=200 m=300 ''',g,l) print(g) #{'x': 100,…
在代码实现上,线程的实现与进程的实现很类似,创建对象的格式都差不多,然后执行的时候都是用到start()方法,与进程的区别是进程是资源分配和调度的基本单位,而线程是CPU调度和分派的基本单位.其中多线程的模块处于threading 中的Thread. 多线程实现例子 #coding=utf-8 import threading import time def saySorry(): print("吃饭睡觉打豆豆") time.sleep(1) if __name__ == "…
正则表达式在爬虫项目中应用很广泛,主要方面就是在字符串处理方面,经常会涉及到字符串格式的校验,用起来经常要查看文档才能完成,所以抽了个时间将正则的内容复习了一下. Start re---导入re模块使用 #coding=utf-8 # 导⼊re模块 import re # 使⽤match⽅法进⾏匹配操作 result = re.match(正则表达式,要匹配的字符串) # 如果上⼀步匹配到数据的话,可以使⽤group⽅法来提取数据 result.group() 其中正则表达式就是Pattern,…
python的动态性 什么是动态性呢,简单地来说就是可以在运行时可以改变其结构,如:新的函数.对象.代码都可以被引进或者修改,除了Python外,还有Ruby.PHP.javascript等也是动态语言.下面是python中常用动态性 运行的过程中给对象绑定(添加)属性 >>> class Person(object): def __init__(self, name = None, age = None): self.name = name self.age = age >>…
python实现进程的三种方式及其区别 在python中有三种方式用于实现进程 多进程中, 每个进程中所有数据( 包括全局变量) 都各有拥有⼀份, 互不影响 1.fork()方法 ret = os.fork() if ret == 0: #子进程 else: #父进程 这是python中实现进程最底层的方法,其他两种从根本上也是利用fork()方法来实现的,下面是fork()方法的原理示意图 getpid().getppid()方法 import os rpid = os.fork() if r…
*args 和 ** kwargs 的用法 首先,这两者在用法上都是用来补充python中对不定参数的接受. 比如下面的列子 def wrappedfunc(*args, **kwargs): print("%s called at %s"%(func.__name__, ctime())) 这是一个函数   其次,在调用时候 1.   wrappedfunc('1','2')#这样会自动将'1','2'这两个参数赋值给args 此时args这个变量就是一个list          …
Queue的使用 Queue在数据结构中也接触过,在操作系统里面叫消息队列. 使用示例 # coding=utf-8 from multiprocessing import Queue q = Queue(3) # 初始化⼀个Queue对象, 最多可接收三条put消息 q.put("消息1") q.put("消息2") print(q.full()) # False q.put("消息3") print(q.full()) # True # 因为…
PDB调试 def getAverage(a,b): result =a+b print("result=%d"%result) return result a=100 b=200 c=a+b ret = getAverage(a,b) print(ret) #l--->>list current code #n--->> next #c---->>continue #b--->>>添加断点 #clear -->>>…
近几年,Python一路高歌猛进,成为最受欢迎的编程语言之一,受到无数编程工作者的青睐. 据悉,Python已经入驻部分小学生教材,可以预见学习Python将成为一项提高自身职业竞争力的必修课.那么零基础的学习者应该怎么开始学习呢?本文将分享给大家关于Python核心知识学习的思维导图,一起来看看吧! 近几年,Python一路高歌猛进,成为最受欢迎的编程语言之一,受到无数编程工作者的青睐. 据悉,Python已经入驻部分小学生教材,可以预见学习Python将成为一项提高自身职业竞争力的必修课.那…
现在开始学习Python语言的核心部分.首先了解什么是Python对象,然后讨论最常用的内建类型,接下来讨论标准类型运算符和内建函数,之后给出对标准类型的不同分类方式,最后提一提Python目前还不支持的类型(这对那些有其他高级语言经验的人会有所帮助). 1 Python对象 Python使用对象模型来存储数据,任何类型的值都是一个对象. 所有的Python对像都拥有三个特性:身份,类型,值. 身份:对象的唯一标识,可以用内建函数id()来得到.它与该对象的内存地址相关,程序中极少会用到. 类型…
面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 面向对象高级语法部分 经典类vs新式类 把下面代码用python2 和python3都执行一下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #_*_coding:utf-8_*_     class A:     def __init__(self):         self.n = 'A'   class B(A)…
关于元类,我写过一篇,如果你只是了解元类,看下面这一篇就足够了. Python面向对象之类的方法和属性 本篇是深度解剖,如果你觉得元类用不到,呵呵,那是因为你不了解Django. 在Python中有一个type类,所有的类都是基于type类生成的,可谓万物之母. 如此广袤无垠的python生态圈,都是由type产生出来的. Python面向对象总计包含五大部分: 常用部分: 3.class(类,或者叫实例生成器) 4.instance(实例) 5.实例的各种属性与方法,我们平常使用python时…
item系列 __slots__方法 __next__ 和 __iter__实现迭代器  析构函数 上下文管理协议 元类一.item系列 把对象操作属性模拟成字典的格式.  例如:对象名['key'] = value class Foo: def __init__(self,name): self.name = name def __getitem__(self, item): return self.__dict__[item] def __setitem__(self, key, value…
type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello.py模块: class Hello(object): def hello(self, name='world'): print('Hello, %s.' % name) 当Python解释器载入hello模块时,就会依次执行该模块的所有语句,执行结果就是动态创建出一个Hello的class对象,测试如下: >>> fro…
一.类也是对象 只要使用关键字class,Python解释器在执行的时候就会创建一个对象.下面的代码段: class ObjectCreator(object): pass 将在内存中创建一个对象,名字就是ObjectCreator.这个对象(类)自身拥有创建对象(类实例)的能力. 它的本质仍然是一个对象,于是乎你可以对它做如下的操作: 1)   你可以将它赋值给一个变量 2)   你可以拷贝它 3)   你可以为它增加属性 4)   你可以将它作为函数参数进行传递 >>> class…
本章将深入介绍Python的文件处理和相关输入输出能力,包括:文件对象(以及它的内建函数.内建方法和属性),标准文件,文件系统的访问方法,文件执行,最后简要涉及持久存储和标准库中与文件有关的模块. 1 文件对象 句柄.文件描述符,可以访问磁盘的普通文件,也可以访问设备文件等类文件.文件只是连续的字节序列,无论单字节还是大块数据,数据传输会用到字节流. 2 文件内建函数 open()和file()功能一样,打开一个文件,返回一个文件对象,打开错误则引发错误.推荐:打开文件时用open,为了说明文件…
本章介绍了Python的背景知识,包括什么是Python.Python的起源以及Python的一些关键特性. 1 什么是Python Python是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性. 2 起源 贵铎·范·罗萨姆(Guido van Rossum)于1989年底始创了Python:1991年初,Python发布了第一个公开发行版. 3 特点 3.1 高级 Python是一门强大的.可以进行系统调用的解释型脚本语言:内建有常用的高…
大纲 一.面向对象高级语法 1.静态方法.类方法.属性方法 2.类的特殊成员方法 3.反射 二.异常处理 三.网络编程之socket基础 一.面向对象高级语法 1.静态方法:名义上归类管理,实际上静态方法里访问不了类或者实例中的任何属性 # _*_ coding:utf-8 _*_ __author__ = "ZingP" class Dog(object): def __init__(self,name): self.name = name @staticmethod # 实际上跟类…
虽然对python的基础知识有所了解,但是为了更深入的学习,要对python的各种经典书籍进行学习 第一章介绍python的优缺点,略过 第二章介绍python起步,第三章介绍python基础,仅记录一些有用的 help(函数名),获取函数的使用帮助,q退出 python支持五种基本的数字类型 int(有符合整数),long(长整数),bool(布尔值),complex(复数),float(浮点数) decimal(十进制浮点数)2.4以后添加了 for item in items常用来循环遍历…
本章的主题是Python中的数字,这里详细介绍每一种数字类型,它们适用的各种运算符,以及用于处理数字的内建函数.在本章的末尾简单介绍了几个标准库中用于处理数字的模块. 1 数字类型 数字:标量贮存,可直接访问.值不可更改,更新数字的值其实是生成了一个新的对象. 创建数字对象:赋值的时候就已经创建. 更新数字对象:给变量赋新值时,其实是创建了一个新的对象,并将其引用赋值给变量.原对象引用计数减1. 删除数字对象:无法真正删除对象,只能用del语句删除对象的这个引用(变量名),之后不能使用这个引用.…
isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象,如果是返回True class Foo(object): pass obj = Foo() print(isinstance(obj, Foo)) issubclass(sub, super)检查sub类是否是 super 类的派生类,如果是返回True class Foo(object): pass class Bar(Foo): p…
字典是python里唯一的映射类型…
比较符号如<,>,=比较的是对象的值 如果要比较对象本身要用is,is not repr()的功能与''所做的事情是一样的 Python不支持的类型有char,byte,指针,short,long,double python缓存了(-1,100)使用这个范围的数字,如果是同一个值,内存地址一样,所以用is函数判断结果是True,不在这个范围的就是False…
本章讲述if.while.for以及与他们搭配的else.elif.break.continue.pass等语句. 1 if语句 语法:三部分——关键字if.条件表达式.代码块.(记住冒号) if cond_expr: expr 1.1 多重条件表达式 条件表达式可以是一个由not.and.or连接起来的逻辑表达式. 1.2 单一语句的代码块 如果代码块只有一行,可以将三部分写在一行,不推荐这样. 2 else语句 同C语言中的if...else...,记住冒号.else一定要与和它搭配的if对…
本章介绍Python语言中的映射类型(字典)和集合类型,包括操作符.工厂函数.内建函数与方法. 1 字典 字典是Python中唯一的映射类型——键key直接映射到值value.字典是容器类型,其对象是可变的.字典中的数据是无序排列的.是哈希表. 创建字典——直接赋值{}.工厂函数dict().内建方法fromkeys(): >>> dict1={} >>> dict2={'name':'earth','port':80} >>> dict1, dict…
11 列表 类似于C语言的数组,但是列表可以包含不同类型的任意对象.列表是可变类型. 创建列表——手动赋值.工厂函数: >>> aList = [12, 'abc'] >>> print aList [12, 'abc'] >>> list('foo') #参数为可迭代对象 ['f', 'o', 'o'] 访问列表元素——下标[]或者切片[:]. 更新列表——直接对索引/索引范围赋值: >>> aList[0] = 'def' #对一…
本章研究Python中的序列:字符串.列表和元组.因为这些类型其实都是由一些成员共同组成的一个序列整体,所以我们把它们统称为序列.序列的存储结构可以表示为: 1 序列 序列类型有着相同的访问模式:按下标访问某一元素[0, N-1],也可以通过切片操作一次得到多个元素. 1.1 标准类型操作符 比较运算.逻辑运算(见4.5节),一般都能适用于所有序列类型. 1.2 序列类型操作符 in, not in #成员关系操作符 + #连接操作符 * #重复操作符 [] #切片操作符 成员关系操作符——ob…
本章介绍基本的Python语法.编程风格:并简要介绍标识符.变量和关键字,以及变量占用内存的分配和回收:最后给出一个较大的Python样例程序来体验这些特性. 1 语句和语法 1.1 注释 可以在一行的任何位置,以 # 开头,直至行尾都是注释. 1.2 反斜线继续上一行 一行过长的语句,可以用反斜线 \ 分解成几行.\ 必须是该行的最后一个字符(其后不能有空格等其他任何字符). 闭合符号:小括号().中括号[].花括号{}.三引号"""  """…