Python语法以及面对对象编程
killeri
Python的自学者,时间很宝贵,我选择Python
展开
-
Python的高级特征——切片
话不多说,直接上干货! 切片用于取list,tuple和str的部分元素,可以达到很简单的操作完成。 list[a:b:c] (其中中括号内至少有一个冒号) 在没有自己给定义时,a表示list中的第一个元素 b表示list中最后一个元素的后一个原创 2017-11-12 21:43:59 · 634 阅读 · 0 评论 -
计算多边形的周长-----面对对象编程
使用面对对象编程,隐藏细节,对坐标轴上的多边形的周长进行计算import mathclass Point: def __init__(self, x, y): self.x = x self.y = yclass Polygon: def __init__(self): self.vertices = [] ...原创 2018-08-05 17:39:25 · 3643 阅读 · 2 评论 -
python3 中的静态方法和类方法的使用
类方法和静态方法的实现# 类方法和静态方法的实现class contact: all_contacted = [] # 类属性,所有实例可更改,当然也相同值的属性 def __init__(self, name, phone_num, sex): self.name = name self.phone_num = phone_num...原创 2018-08-01 19:05:13 · 1068 阅读 · 0 评论 -
多重继承-super使继承变得更清楚
多重继承的注意点,以及“下一个”的引用 详解super() 函数在多重继承中的作用# 多重继承# 多重继承的重复调用问题class BaseClass: num_base_calls = 0 def call_me(self): print("Calling method on BaseClass") self.num_base_cal...原创 2018-08-01 19:11:45 · 989 阅读 · 0 评论 -
继承实例--一个房屋中介
通过一个房屋中介的实例,说明继承*实现的功能: - 中介掌握有所有房屋的信息 - 中介可以添加房屋,在他掌握的房屋信息中 - 房子有两种类型,有区分*class Agent: # 代理类 Property_list = [] def display(self): # 通过循环呈现出所有的房产 for each_proper...原创 2018-08-02 15:39:00 · 312 阅读 · 0 评论 -
python3的print函数以及重定向
首先介绍一下print函数:print([object1, object2, object3, …] [,sep=’ ‘] [end=’\n’] [file = sys.stdout])也就是对于print所有的参数都是可选的,如果没有参数,print会打印一个换行符到标准输出参数解释:object是要打印的对象,多个打印对象用逗号隔开sep ->对于多个打印对象,之间用sep隔开...原创 2018-09-23 14:38:00 · 3554 阅读 · 0 评论 -
python中的赋值
一、python有简单的赋值,如x= 1二、序列赋值,如 a, b, c = 1, 2, 3 或者[a, b, c] = 1, 2, 3 又或者 (a, b, c) =1, 2, 3序列赋值要求等号两边都是序列,变量的序列和值的序列,然后序列长度相等,也就是序列值一一对应还可以进行嵌套赋值:((a,b),c) = [[1, 2], 3]这样a = 1, b=2, c=3.就是这么神奇...原创 2018-09-23 14:52:46 · 16222 阅读 · 0 评论 -
python3.x的字符串
首先了解一下字符集: *最初的ASCII标准在美国创建,只包含了0~127个字符的字符代码,后来的Latin-1字符集,充分利用了8位的空间,添加了一些特殊字符,此时就有了128~255这些特殊字符代码,上面两个字符集中每个字符只占据了一个字节(八位),但是像在亚洲等其他地区的字符一个字节可表示不了一个字符,所以出现了称为“宽字符”的概念,如Unicode字符集,它可为一个字符表示一...原创 2018-09-13 17:55:23 · 273 阅读 · 0 评论 -
python列表的实现
从数据结构的角度来看,python列表是通过线性表来实现的,进一步来讲,是动态的顺序表来实现list的。那我们就应该首先讲一下什么是动态的顺序表?顺序表分为两类-----一体式顺序表和动态的顺序表, 动态的顺序表指的是表对象和表元素的主体不在一个存储快中,表对象通过连接的方式与存储元素的块相连。图示如下:你要是问我图片哪里来的,《数据结构与算法 python实现》。怎么个动态法呢?...原创 2018-10-11 12:02:11 · 567 阅读 · 0 评论 -
生成器(自身就是一个迭代器)
对于python中两种延迟生成值的结构:生成器函数生成器表达式我相信生成器函数各位都是不陌生的,就是在函数返回值前用yield,但是注意一点,这里我并没有说用yield代替return,两个意义其实是不同的,所以不存在代替的问题,两者可以共存。例如:def instance(): for i in range(1, 6): yield i if i == 4: ret...原创 2018-10-18 11:25:24 · 278 阅读 · 0 评论 -
迭代器相关的运算重载符
__iter__和__next__是在类中自动实现迭代协议的运算重载符。例如:class square: def __init__(self, start, stop): self.value = start -1 self.stop = stop def __iter__(self): return self def __next__(self): if self.v...原创 2018-10-18 11:50:59 · 718 阅读 · 0 评论 -
迭代器和可迭代对象
基于python3迭代器 = 可迭代的对象可迭代的对象 != 迭代器讲在前面:返回迭代器的对象,有:open(), map(), zip()和filte()函数,这几个函数直接返回迭代器也就是可以直接在结果中调用next如:f = open('xxx.txt')while true: print(next(f))# 结果是逐个返回文件对象中的各个行返回的可迭代对象有:rang...原创 2018-10-17 11:18:23 · 507 阅读 · 0 评论 -
中缀向后缀表达式的转换
前面也说过,对于计算机来说(不仅仅是计算机)中缀表达式都是复杂的,它要考虑到优先级的问题,很伤脑筋,至于中缀向后缀的转换也是一个很伤脑筋的事情,在转换的过程中要考虑到很多优先级的情况。好了,既然跟优先级有关,那么我们就应该为各个运算符号设置一个优先级,我们很明显对于加减乘除的优先级已经很明显能知道怎么设定,关键是扩号这个拥有最高优先级的符号该怎么设置优先级。在考虑这个问题之前我们首先考虑一下没有...原创 2018-10-21 15:37:05 · 209 阅读 · 0 评论 -
一个需要身份认证和授权的程序
首先文件auth.pyimport _hashlibclass User: '''Create a new user object. The password will be encrypted before storing''' def __init__(self, username, password): self.username = us...原创 2018-08-04 20:34:57 · 1299 阅读 · 0 评论 -
异常,其实就是一个类的问题
上一篇讲过我们如何捕获异常,这一篇来探讨异常,发掘异常捕获不仅仅可以是异常捕获,还可以作为if语句一样进行决策!异常的基类:BaseException 基类下的子类(三个):SystemExit (当退出python系统时出现,sys.exit())KeyboardInterrupt (当程序的执行受到键盘组合键打断时出现(ctrl+c))Exception其中Excep...原创 2018-08-04 17:38:38 · 168 阅读 · 0 评论 -
异常(错误)也是对象哦
探讨python3中异常(错误)捕获 as 关键字的作用:a as b 意思是将a对象重命名为b# raise 用于生成一个错误# raise SomeError("SomeError will be raised")# 错误的捕获def funny_division1(anumber): try: # try语句用于放置任何可能引起错误的语句 ...原创 2018-08-03 21:36:12 · 3198 阅读 · 0 评论 -
Python的变量以及Python的除法
一、变量 **变量 Python是一个动态语言,即变量的类型是不固定的。相对比C语言和Java等静态语言其变量类型在定义时就是要确定的,用个例子来说明一下两种类型的变量定义赋值方式**Python: >>>name='killeri' #Python中变量直接赋值就行,变量类型和后面的值是相同的 >>>name原创 2017-11-13 12:18:19 · 10122 阅读 · 0 评论 -
Python的高级特征(二)——迭代
一、迭代 我相信在看我这个文章还有好多人不是很清楚迭代到底是什么意思,这个你就要自己百度了! 在Python中迭代都是由for…in…来完成,也就是任何可迭代的对象都可以用for循环,包括我们自己定义的数据类型只要是符合迭代的条件的都可以。 那么我们下面来看一下到底怎么样的数据类型符合是迭代形式的呢 1、list,tuple和str是的s='abcd'原创 2017-11-13 21:30:16 · 303 阅读 · 0 评论 -
Python的高级特征——列表生成式
Python有着自己强大的列表生成式,可以返回一个list其基本型式: 用语言表述中括号内,从左到右依次是待生成的元素(含操作)、一个或是几个for循环(迭代)、o个一个或几个if限制条件 式子表示 >>>list=[M*N for M in 'abc' for N in [1,3,4] if N%2==0]原创 2017-11-14 11:54:15 · 339 阅读 · 0 评论 -
Python的高级特征(三)——生成器
一、生成器 1、列表生成器: 列表生成器不同于列表生成式的是,列表生成器是通过计算的出来的list的值,一次迭代操作获得一个值。而列表生成式一次性就生成了一个列表。很明显,但要生成的列表很大时,列表生成式会占用很大的内存的,而列表生成器更像是一个数据流,一次迭代调动才会生成一个元素列表生成器的形成方式与列表生成式相似,不过将列表生成式的‘[]’改成了‘()’ 详细看例子就知道了>>>l=[x原创 2017-11-14 21:21:32 · 308 阅读 · 0 评论 -
用Python实现——插入排序(两种思想)
今天在重新温习排序的时候,突然想着用Python来实现一下插入排序(之前用C语言实现过了,学Python没几天),由于语法还不是很熟悉,可以说实现过程很艰难,竟然用了哟差不多两个小时。。。。好了,那就正式写了(内含代码可以直接运行)**首先介绍一下插入排序,作为一种最简单粗暴的排序算法,理解不难,实现也不难,但其时间复杂度比其他排序算法要大点(O(logN*N)) 插入排序的工作方式:原创 2017-11-15 16:37:08 · 6896 阅读 · 3 评论 -
Python函数式编程——sorted和sort函数
这节主要讲的是sorted,因为sort函数的排序仅限于列表,而sorted对于所有的可迭代对象都可进行排序,所以更加的常用。 还有一点是比较重要的,对于排序sort是在list的原址上进行排序排序的,而sorted返回的是一个已经排好序的副本,其原址Iterable的序列并没有变化**在正式将sorted函数之前,我们简单的讲一下Python的匿名函数lambda(其在Python中用的比较窄)原创 2017-11-16 13:29:21 · 349 阅读 · 0 评论 -
Python中线程的创建方法:派生Thread子类
在看这个之前,我应该假设你对类已经很熟悉了。 什么是超类,子类?怎么派生子类?子类的继承,子类对于超类方法的添加或是重载。这些如果很熟悉,就能看懂了,如果不是很熟悉,你可以去看看《Python学习手册》,它的第六部分关于类介绍的很仔细,阅读即可。那么接下来就来讲这种创建线程的方式——派生Thread子类,并创建子类的实例#-*- coding: UTF-8 -*-import threading原创 2017-11-25 21:14:47 · 2160 阅读 · 0 评论 -
关于静态方法和类方法的一些理解
刚学类的时候,对类的对象调用不是很透彻,所以有很多疑问,就像这个静态方法和类方法,当时一头雾水! 所以今天我就想来说一下关于python的静态方法和类方法。 声明一个静态方法和类方法这里我们只会说明用装饰器,这是最常见的! 既然称之为方法,那么他们肯定都是在class语句内声明的def语句,只不过与其他方法有些不同而已。首先静态方法,声明方式class Xstaticlass...原创 2018-05-25 15:02:29 · 567 阅读 · 0 评论 -
python装饰器,让你对懂python装饰器是怎么回事!!!
首先,什么是装饰器? 比较官方的解释是:装饰器是用来管理和调用函数和类的一个可调用对象,也就是说分为函数装饰器和类装饰器这个定义函数我自己通俗化了一点,不然更加看不懂,其实我还有一句更加概括的话,可以解释装饰器:装饰器就是对被装饰的对象(函数、类)进行重构的,其可以在不改变原来对象的情况下调用对象时执行重构后的行为这里你可能就糊涂了,看不懂 没关系我们慢慢来!!! 首先,...原创 2018-06-03 20:51:03 · 1340 阅读 · 1 评论 -
关于类,回顾1
最近几天想着看一下scrapy的源码,所以想着回顾一下类,对类进行一个更加深入的了解!!!python是一门面对对象的语言,但总是函数式编程能称之为面对对象吗?所以python定义了一个新的对象—-类,它是python面对对象程序设计的主要工具其实,虽然说python中的一切都是对象,但真正能体现python灵活好用的我觉得非类这个对象不可,它可以实现行为的定制,继承,修改;对python...原创 2018-05-23 14:31:28 · 209 阅读 · 0 评论 -
关于python3.0的类和类型的关系
一句话,在python3.0中,类就是类型,类型就是类。 在python中,平常你认为的一些是内置函数的如list(),str()等,其实都是一些内置的类,也就是说,你在使用它的时候都是创建该类的实例。python3.x所有的类都是新式类(隐式的继承了object元类),新式类是相对于python2.x的经典类说的(显示继承object,也可以是新式类)。新式类有一些变化,今天主要说的是新式...原创 2018-05-28 11:17:16 · 806 阅读 · 0 评论 -
关于中缀转后缀的详细说明
我们还是不要考虑符号的问题,遇到数字直接往列表里加就好了。我们通过比较两个符号优先级来确定该符号应不应该从栈中弹出,换句话说就是我们考虑的就是以怎么样的方式从栈中弹出符号。这样的话,我们首先栈里要有元素对吧,然后我们通过比较优先级它与接下来符号的优先级来确定要不要从栈中弹出这个符号。我们首先确定一下优先级:priority = {"+": 3, "-": 3, "*": 5, "/": 5...原创 2018-10-21 21:17:45 · 1724 阅读 · 0 评论