面向对象的程序设计 一.面向对象的程序设计简介 1.面向对象程序设计的由来. 我们之前虽然学习过了面向过程的程序,它的核心是面向过程,一步一步的设计好了的流程,虽然极大的降低了程序的复杂度,但是一个设计 好了的流程只能满足一个程序后期的可扩展性差,所以为了解决面向过程的程序可扩展性差的缺点,产生了面向对象的程序.他是解决了 面向过程中可扩展性差的问题,如果程序需要扩展就可以对需要扩展的某个对象单独进行修改,就会立刻反映到整个程序体系中,不需要 牵一发而动全身. 注释:像操作系统的开机流程,他就相…
十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in code ① eval : 有返回值, 适用于执行计算语句, 例如eval("4+3"). ② exec : 没有返回值, 适用于执行流程控制语句, 例如exec(a = b if b>c else c) ③ complie: code1 = 'for i in range(0,3):…
Python基础教程之List对象 时间:2014-01-19    来源:服务器之家    投稿:root   1.PyListObject对象typedef struct {    PyObject_VAR_HEAD    PyObject **ob_item;    Py_ssize_t allocated;} PyListObject; PyObject_VAR_HEAD中的obsize表示该list对象含有的元素个数, 而allocated表示该list对象占用的内存空间. ob_it…
这里就不再讲面向对象的相关概念知识或者与面向过程的比较了,直接进入类的学习 1.类的创建 class people: def __init__(self):#构造函数 pass sfencs=people()#类的实例 2.封装 class people: def __init__(self,name,age): self.name=name self.age=age sfencs=people("sfencs",19) print("%s is %d"%(sfen…
Python使用对象模型来存储数据.构造任何类型的值都是一个对象 所有的Python对象都拥有三个特性:身份.类型.值 身份: 每一个对象都有一个唯一的身份来标志自己,任何对象的身份可以使用内建函数id()来得到.这个值可以被认为是该对象的内存地址 类型: 对象的类型决定了该对象可以保存什么类型的值,可以进行怎样的操作,以及遵循什么样的规则,可以使用内建函数type()查看Python对象的类型: >>> type([1,2]) <type 'list'> >>&…
一.面向过程程序设计与面向对象程序设计 面向过程的程序设计:核心是过程,过程就解决问题的步骤,基于该思想设计程序就像是在设计一条流水线,是一种机械式的思维方式 优点:复杂的问题的简单化,流程化 缺点:扩展性差 面向对象的程序设计:核心是对象,对象是特征(变量)与技能(函数)的结合体,是一种上帝式的思维方式 优点:解决了程序的扩展性 缺点:可控性差 二.类和对象 以游戏举例,基于面向对象设计一个款游戏:英雄联盟,每个玩家选一个英雄,每个英雄都有自己的特征和和技能,特征即数据属性,技能即方法属性,特…
1. 内置函数 什么是内置函数? 就是python给你提供的,拿来直接⽤的函数,比如print,input等等,截⽌到python版本3.6.2 python⼀共提供了68个内置函数.他们就是python直接提供给我们的,有 ⼀些我们已经⽤过了,有⼀些还没有⽤过,还有⼀些需要学完了⾯向对象才能继续学习的,今天我们就认识⼀下python的内置函数. 作⽤域相关: locals():返回当前作⽤域中的名字 globals():返回全局作⽤域中的名字 迭代器相关: range():⽣成数据 next(…
#标准库地址:https://docs.python.org/2/library/marshal.html"""有时候,要把内存中一个对象持久化保存磁盘或者序列化二进制流通过网络发送到远程主机上,python有很多模块提供了序列化与反列化功能,如:marshal, pickle, cPickle等 注意: marshal并不是一个通用的模块,在某些时候它是一个不被推荐使用的模块,因为使用marshal序列化的二进制数据格式还没有文档化,在不同版本的Python中,marsha…
print(dir([])) #告诉我列表拥有的所有方法 # 双下方法 # print([1].__add__([2])) print([1]+[2]) ret = set(dir([]))&set(dir({}))&set(dir(''))&set(dir(range(10))) print(ret) #iterable print('***'.center(50,'-')) # 只要是能被for循环的数据类型 就一定拥有__iter__方法 print('__iter__' i…
# 迭代器和生成器 # 迭代器: # 双下方法 : 很少直接调用的方法.一般情况下,是通过其他语法触发的 # 可迭代的 —— 可迭代协议 含有__iter__的方法('__iter__' in dir(数据)) # 可迭代的一定可以被for循环 # 迭代器协议: 含有__iter__和__next__方法 # 迭代器一定可迭代,可迭代的通过调用iter()方法就能得到一个迭代器 # 迭代器的特点: # 很方便使用,且只能取所有的数据取一次 # 节省内存空间 # 生成器 # 生成器的本质就是迭代器…
阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 1 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 2 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input(…
#!/usr/bin/env python # -*- coding:utf-8 -*- class Foo:#定义类 def mail(self,email,message):#定义类的方法 print('发送邮件给%s! 信息:%s'% (email,message)) return True obj = Foo();#创建对象 obj.mail('40365257@qq.com','测试邮件信息123')#对象调用方法 self参数不用赋值,系统自动赋值 #类 对象的封装和调用 class…
前言 什么叫异常?简单来说就是程序运行发生了预计结果之外的情况从而导致程序无法正常运行.而python解释器将一些常见的异常情况在它发生时打包成一个异常对象,我们可以通过捕捉这些异常对象从而进行处理,否则其会一层层冒泡,直到被处理或程序退出. python内置异常类 内置异常类值指的是定义在builtins模块的异常类,内置的异常类有: BaseException:所有异常的基类,包括退出异常和非退出异常: SystemExit: 解释器请求退出  KeyboardInterrupt: 用户中断…
变量作用域标识符的作用域是定义为其声明的可应用范围,或者即是我们所说的变量可见性.也就是,我们可以在程序的那个部分去访问一个制定的标识符.全局变量与局部变量定义在函数内的变量有局部作用域,在一个模块中最高级别的变量有全局作用域.全局变量的一个特征是除非被删除掉,否则它们将存活到脚本运行结束,且对于所有的函数,他们的值都是可以被访问的,然而局部变量,就像它们存放的栈,暂时地存在,仅仅只依赖于定义它们的函数现阶段是否处于活动.当一个函数调用出现时,其局部变量就进入声明它们的作用域.在那一刻,一个新的…
一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() print(isinstance(obj, Foo)) issubclass(sub, super)检查sub类是否是 super 类的派生类 class Foo(object): pass class Bar(Foo): pass print(issubcla…
一.抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 1.在python中实现抽象类 import abc #利用abc模块实现抽象类 class All_file(metaclass=abc.ABCMeta): all_type='file' @abc.abstractmethod #定义抽象方法,无需实现功能 def read(self): '子类必须定义读功能' pass @abc.abstractmethod #定义抽象方法,无需实现功能 def write(sel…
一.加密模块 1.有解密的加密方式(base64) #base64加密 import base64 str_encrypt = input("输入要加密的字符串:\n") base64_encrypt = base64.b64encode(str_encrypt.encode('utf-8')) print("BASE64加密串:\n"+str(base64_encrypt,'utf-8')) # 解密 str_decrypt = input("输入要解密…
Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程. 接下来我们先来简单的了解下面向对象的一些基本特征. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定…
本节内容 1:Python/selectors模块 2:selsect实例 1:Python/selectors模块及队列  selectors模块是可以实现IO多路复用机制: 它具有根据平台选出最佳的IO多路机制,比如在win的系统上他默认的是select模式而在linux上它默认的epoll. 常用IO多路复用共分为三种: select.poll.epoll 且windows上只支持select,而linux上都支持 select的缺点: 1.每次调用都要将所有的文件描述符(fd)拷贝的内核…
1.dict 字典对象 a.定义对象 d={'a':14,'b':12}b.通过key获取value d['a'] 方法1.判断key是否存在 if 'a' in d: d['a']方法2:通过用get方法获取 如果不存在则返回none数据d.get('a'); dict 查找速度快 list随着元素的数量的增加变慢dict 占用内存 浪费大量的内容 list占用内存小 查找速度慢dict中的key不能重复 dict 没有顺序 dict的key 是不可以变的 字符串 整数 浮点数都不可变 都可以…
可迭代对象和迭代器对象:前者生成后者 比喻:10个硬币都可以一一数(迭代),放入到存钱罐(可以取钱的那种),那这个存钱罐就是一个迭代器对象 需求:从网络抓取各个城市气温信息,并依次显示若依次抓取较多的城市,有较高的访问延迟,并且浪费存储空间,希望以 “用时访问”策略 将所有的城市气温封装在一个对象,可 用for语句迭代,如何解决? 方法:一:实现一个迭代器对象,next()方法返回每一个城市气温二:实现一个可迭代对象,__iter__方法返回一个迭代器对象 import requests #pr…
socket 参数及方法说明 初始化参数 sk = socket.socket(参数1,参数2,参数3) 参数1:地址簇 socket.AF_INET IPv4(默认) socket.AF_INET6 IPv6 socket.AF_UNIX 只能够用于单一的Unix系统进程间通信 参数2:类型 socket.SOCK_STREAM 流式socket , for TCP (默认) socket.SOCK_DGRAM 数据报式socket , for UDP socket.SOCK_RAW 原始套接…
class Foo:#定义类 def mail(self,email,message):#定义类的方法 print('发送邮件给%s! 信息:%s'% (email,message)) return True obj = Foo();#创建对象 obj.mail('40365257@qq.com','测试邮件信息123')#对象调用方法 self参数不用赋值,系统自动赋值 #类 对象的封装和调用 class SQLHelper: def fetch(self,sql): #这里的self 指代后…
什么是递归函数 一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的.用递归过程定义的函数,称为递归函数,例如连加.连乘及阶乘等.凡是递归的函数,都是可计算的,即能行的. 递归就是一个函数在它的函数体内调用它自身. 编程语言中的对递归定义: 编程语言中,函数Func(Type a,--)直接或间接调用函数本身,则该函数称为递归函数.递归函数不能定义为内联函数. 数学中对递归的定义: 在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一…
目录 1.for循环语法 2.for循环中的break和continue 3.循环+else结构 (1)while...else (2)while...else退出循环的方式 (3)for...else (4)for...else退出循环的方式 提示:上一篇文章中详细的说明了while循环语句,本篇文章来说说Python中的for循环语句. 1.for循环语法 # 注:临时变量是程序员自定义的临时变量. for 临时变量 in 序列: 重复执行的代码1 重复执行的代码2 ...... for循环…
不同的代码段采用不同的命名长度.通常来说,循环计数器(loop counters)采用1位的单字符来命名,循环判断变量(condition/loop variables)采用1个单词来命名,方法采用1-2个单词命名,类采用2-3个单词命名,全局变量采用3-4个单词命名. 对变量采用具体的命名(specific names)方式,”value”, “equals”, “data”在任何情况下都不是一种有效的命名方式. 采用有意义的命名(meaningful names).变量的名字必须准确反映它的…
P75. 闭包,需再理解. 装饰器,语法糖…
def __lt__ def __gt__ def __repr__…
python基础--重访类型分类 对象根据分类来共享操作:例如,字符串.列表和元组都共享诸如合并.长度和索引等序列操作. 只有可变对象(列表.字典和集合)可以原处修改:我们不能原处修改数字,字符串.元组. 文件导出的方法,可变性并不真的适用于他们--当处理文件的时候,它们的状态可能会修改,但是,这与Python的核心类型可变性限制不完全相同. "数字"包含了所有数字类型:整数.浮点数.复数.小数和分数. 字符串包括str.以及bytes和Unicode:3.0+的bytearray字符…
本文地址:http://www.cnblogs.com/archimedes/p/python-modules.html,转载请注明源地址. 模块简介 如果你退出 Python 解释器重新进入,以前创建的一切定义(变量和函数)就全部丢失了.因此,如果你想写一些长久保存的程序,最好使用一个文本编辑器来编写程序,把保存好的文件输入解释器.我们称之为创建一个脚本.程序变得更长一些了,你可能为了方便维护而把它分离成几个文件.你也可能想要在几个程序中都使用一个常用的函数,但是不想把它的定义复制到每一个程序…