Python
杨友山
多年软件开发管理经验,曾在腾讯、中兴通讯等企业从事软件开发和管理工作,熟悉技术和开发管理;曾在微软从事售前技术支持,接触过产品销售。目前在从事低代码平台类产品研发相关工作。 擅长.NET领域,前端angular,vue,typescript,Oracle,云计算相关。
展开
-
少说话多写代码之Python学习050——类的成员(静态方法,类成员方法,getattr,setattr)
我们在访问类的字段时,还有一些过滤的条件,类似于前端语言比如vue Js、anjularJs中过滤器的概念。在3.0以前可以使用比如,__setattr__,__getattr__的方法进行属性的过滤。在3.0以后我们如果对某些字段需要过滤访问,也可以使用这些函数。class Rectangle2: def __init__(self): self.width=0 ...原创 2018-11-25 23:36:40 · 1152 阅读 · 0 评论 -
少说话多写代码之Python学习044——类06(多继承)
关于继承最麻烦的就是多继承,而Python是支持多继承的。也就是说一个子类可能有两个以上的父类。比如,如下代码,子类继承了两个类,父类的方法在子类中都可以调用。class Programer: language='二进制' def work(self): print('程序员用%s 写代码' %(self.language)) def workDat...原创 2018-11-17 20:43:44 · 198 阅读 · 0 评论 -
少说话多写代码之Python学习048——类的成员(supper函数)
继承父类的构造函数,前面我们在子类的构造函数中调用:父类__init__(self),调用父类的构造函数。这种做法称之为绑定未绑定的父类构造函数。在Python3.0中可以使用supper函数实现继承父类构造函数。_metaclass_=typeclass Bird: def __init__(self): self.hungry=True def ea...原创 2018-11-22 23:24:12 · 1143 阅读 · 1 评论 -
少说话多写代码之Python学习046——类的成员(构造函数)
构造函数是一个类里比较特殊的函数,一般即时不写构造函数,类也会默认有一个默认构造函数,比如像下面这样的,__init__ 其实是一个默认构造函数。 class Book: bookName='书名' def __init__(self): self.bookName='时间简史'b=Book()print(b.bookName)输出时间简史...原创 2018-11-19 23:12:11 · 2071 阅读 · 0 评论 -
少说话多写代码之Python学习043——类05(检查继承关系)
Python中还可以检查类的继承的关系。比如,如下两个类,PrimaryBaLinghouStudent继承了BaLinghouStudent。class BaLinghouStudent: name='学生' school='学校' def init(self,n,s): self.name=n self.school=s ...原创 2018-11-17 10:15:15 · 418 阅读 · 0 评论 -
少说话多写代码之Python学习047——类的成员(调用父类构造函数)
前面我们知道了在Python中如何继承。我们看下面的继承关系,Bird类有一个eat方法。BigBird继承了Bird,并且新增了sing方法。class Bird: def __init__(self): self.hungry=True def eat(self): if self.hungry: print('开...原创 2018-11-20 23:30:01 · 722 阅读 · 0 评论 -
少说话多写代码之Python学习042——类04(超类 )
来看看Python中类的继承。被继承的类称作超类。先看一个类,定义了一个Student类,有两个属性和三个方法。class Student: name='学生' school='学校' def init(self,n,s): self.name=n self.school=s def goSchool(self): ...原创 2018-11-14 22:42:22 · 1203 阅读 · 1 评论 -
少说话多写代码之Python学习045——类07(异常)
异常是程序遇到错误了,这种错误有的是已知的,可预判的。有些是未知的,莫名其妙的。比如,s=1/0print(s)输出Traceback (most recent call last): File "D:/work/Python/Class7.py", line 4, in <module> s=1/0ZeroDivisionError: divisio...原创 2018-11-18 21:31:35 · 216 阅读 · 0 评论 -
少说话多写代码之Python学习039——类01(如何定义类 )
在我们使用的面向对象语言中,类是一个基础单元;一个超级程序工程,其基本组成也是类。Python中如何定义一个类,我们来看看,class Person: def setName(self,name): self.name=name def getName(self): return self.name def speak(self):...原创 2018-11-08 22:54:30 · 301 阅读 · 0 评论 -
少说话多写代码之Python学习041——类03(类命名空间 )
先看两个函数,实现一个数的平方。def squarter(x): return x*xsquarter2 = lambda x: x*xprint(squarter(9))print(squarter2(8))输出8164调用时,squarter和squarter2可以在全局函数模块定义,也可以在局部函数中定义。这样定义的其实都可称作代码块。而我们定义的...原创 2018-11-11 23:17:19 · 907 阅读 · 0 评论 -
少说话多写代码之Python学习037——创建函数03(函数的使用 )递归
前面学会了如何创建函数,至于函数参数列表的使用,函数内部作用域,函数重载等等,Python中的函数与其他语言的函数并无不同,所以这里不再说明。我们一般学习的第一门编程语言大多是C语言,学习C语言我们每每学的都是递归,二分查找,冒泡排序以及各种排序等等。那么我们选一两样看看Python中如何实现。看看递归和二分法查找,看看函数的使用。递归,递归最大特点是函数自己调用自己,直到最终返回一个值,...原创 2018-11-05 23:36:31 · 803 阅读 · 0 评论 -
少说话多写代码之Python学习038——创建函数04(函数的使用 )二分法查找
二分法查找有一个重要前提,就是序列是有序的。在有序的序列中找到一个中点,然后对比目标元素在中点的哪一侧,然后依次这样查找,最终找到。逻辑非常简单。我们主要看在Python中是如何实现的,直接看代码如下,def binarySearch(sequnce,number,lower=0,uper=None): if uper is None:uper=len(sequnce)-1 ...原创 2018-11-07 23:23:39 · 841 阅读 · 0 评论 -
少说话多写代码之Python学习040——类02(类的函数和方法 )
在类里定义函数时的self参数,其实是方法和函数的区别。在类里定义方法时,一般都在方法里加一个默认的参数,可以是,a,c,d的。但是约定俗成就统一叫self。self表示的是这个类的当前实例,一个类有多个实例,那么它属于自己所属于的实例,不会存在实例宁缺的self会指向实例陈皮皮。这里比价特别的是,可以把一个普通函数绑定到方法上使用,普通函数是没有self的,看下面代码,class my...原创 2018-11-10 23:37:56 · 1108 阅读 · 4 评论 -
少说话多写代码之Python学习036——创建函数02(函数的注释)
下面我们看看Python中如何给函数增加注释,以及如何获取一个函数的基本信息。因为Python是解释运行的语言,增加注释和查看函数信息都需要一些方法实现。如下,定义了一个将字符串生成MD5的函数,并且加了注释,然后可以通过__doc__属性和help函数来获取函数的信息。import hashlibdef genMd5(value): '生成MD5值' return ...原创 2018-11-04 22:49:31 · 236 阅读 · 0 评论 -
少说话多写代码之Python学习049——类的成员(property函数)
如果要访问类中的私有变量,根据面向对象原则,是不能直接访问的,这里有一个访问器的概念。将私有变量进行封装,公布出访问的方法。比如下面这样, 一个矩形类型,设置大小,然后获取大小。class Rectangle: def __init__(self): self.width=0 self.height=0 def setSize(self,s...原创 2018-11-24 23:27:24 · 703 阅读 · 0 评论 -
少说话多写代码之Python学习054——类的成员(生成器的方法和模拟生成器))
我们看看生成器的调用以及内部响应,外部访问生成器的send方法,类似于我们方位迭代器的next方法。内部响应的过程是,yield作为表达式使用。生成器重新运行时,yield方法返回一个值,如果send方法被使用,则返回none。比如这样的过程,def repeater(value): while True: new = (yield value) ...原创 2018-12-02 22:40:09 · 766 阅读 · 1 评论 -
少说话多写代码之Python学习051——类的成员(实现迭代器)
在Python类中,实现迭代器,要定义这个方法,__iter__。这个方法返回一个迭代器,其实质是带有一个next方法的对象。为形象起见,我们定义一个斐波那契数列类。如下,class MyFibs: def __init__(self): self.before=0 self.after=1 def __next__(self): ...原创 2018-11-27 23:41:48 · 976 阅读 · 1 评论 -
少说话多写代码之Python学习066——python程序打包01 编译安装
程序开发完成后,我们需要部署给用户使用,一般我们都会将其打包。比如大家在使用windows系统时,安装QQ、微信、除IE外的各种浏览器、看视频软件、word等,都会先下载一个安装包,一般是都是一个EXE或者有多个文件夹的文件,里面包含了一个exe。我们点击exe后,按照提示一步一步,往下安装。Python中其实也可以按这种打包的。有一个工具是Distutils。我们来看看它的使用。在我的工...原创 2018-12-25 00:03:09 · 1404 阅读 · 2 评论 -
少说话多写代码之Python学习063——标准模块(shelve模块)
如果我们只需要存少量的数据,一个简单的存储方案是使用shelve模版。我们只需要给他提供一个指定路径的文件名。shelve调用过程是,先调用open函数,参数为文件名。返回值是一个shell对象。这个对象可以用来存储数据,可以作为一个字典来操作,但是键一定是字符串类型的。操作完成后调用close函数。看下shelve的简单使用,import shelve#参数为文件名,会在当前运行目录...原创 2018-12-18 23:39:40 · 996 阅读 · 0 评论 -
少说话多写代码之Python学习059——标准模块(堆)
heap堆是一种优先队列,用优先队列可以以任意顺序增加对象。并且在任何时间找到最小元素。Python中有一个包含一些堆操作函数的模块heapq。包括如下函数,heappush(heap,x) 将x入堆heappop(heap) 将堆中最小的元素弹出heapify(heap) 将heap属性强制应用到任意列表heapreplace(heap,x) 将堆中最小的元素弹出,同时将x入堆nlar...原创 2018-12-11 23:29:57 · 1061 阅读 · 0 评论 -
少说话多写代码之Python学习062——标准模块(random模块)
random主要是产生随机数。不过实际上,不论哪种语言中所谓的随机数,其实都不是真正意义的随机数。random中的SystemRandom可以让数据接近真正的随机数。我们通过下面的例子来看看随机数的使用。我们在一段时间内产生随机时间。from random import *from time import *#随机时间date1 = (2018,1,1,0,0,0,-1,-1,-1...原创 2018-12-16 23:26:10 · 1165 阅读 · 0 评论 -
少说话多写代码之Python学习061——标准模块(time模块)
日期模块主要是处理日期的,可以实现获取当前时间、操作时间和日期、将字符串格式化为日期以及将日期格式化为字符串。主要函数有,asctime 将时间元组转换为字符localtime 将秒数转换为日期元组,mktime 将时间元组转换为本地时间sleep 休眠strptime 将字符串解析为时间元组time 当前时间import timenow = time.asctime()p...原创 2018-12-15 23:34:55 · 900 阅读 · 0 评论 -
少说话多写代码之Python学习065——标准模块(re模块)
Python的re模块主要是正则表达式的操作函数。我们看看主要的几个函数。首先我们要引入re模块。import recompile将包含正则表达式字符串创建为对象。search在目标字符串中按照给定的正则表达式匹配结果match在字符串的开始处匹配指定正则表达式split根据正则表达式分割字符串findall列举出字符串中符合指定正则表达式的所有匹配项sub将字符串中所有符合...原创 2018-12-21 00:09:02 · 1119 阅读 · 0 评论 -
少说话多写代码之Python学习058——标准模块(集合)
来看看集合(set)的使用。集合类set在sets模块中,Python2.3之后,集合类已经成为语言的一部分,无需再导入sets模块。先看看简单的使用,print(set(range(10)))输出{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}集合中重复值是被忽略的,比如这样,single=set([1,6,7,8,6,6,6,8])print(single)...原创 2018-12-09 18:14:09 · 276 阅读 · 1 评论 -
少说话多写代码之Python学习057——标准模块(看看一些系统模块)
Python语言中有很多系统的模块,我们简单看几个,方便以后自己引用系统模块。一下这些系统模块仅做了解即可。1、syssys模块能够访问Python解释器有关的一些函数和变量,argv 命令行参数exit([arg]) 退出当前程序modules 映射模块名字到载入模块字典path 查找模块所在目录的目录名列表platform 平台标识符stdin 标准输入流stdout...原创 2018-12-09 12:32:44 · 584 阅读 · 0 评论 -
少说话多写代码之Python学习055——类的成员(生成器的应用举例)
我们来看一个有趣的问题:八皇后问题。这里的皇后是国际象棋中的皇后,虽然我只会玩中国象棋而不会玩国际象棋。这个问题和会不会国际象棋没有关系。八皇后问题描述:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。解决这个问题前,我们引入一个回溯的概念。比如我们走迷宫,前路未可知,向前走总会碰到岔路且...原创 2018-12-07 00:13:56 · 820 阅读 · 0 评论 -
少说话多写代码之Python学习064——标准模块(正则表达式)
Python中re模块包含的是对正则表达式的支持。正则表达式是一个很有趣,对处理字符串作用比较大,我们可以花一点时间了解一下。正则表达式是可以匹配文本片段的一组规则。最简单的正则表达式就是一个字符串,能匹配自身。比如字符串a='迢递嵩高下,归来且闭关',可以匹配字符串b='迢递嵩高下,归来且闭关'。下面我们简单看看正则表达式的一些基本规则。1、通配符正则表达式中一些特殊字符可以匹配多个字符...原创 2018-12-19 23:57:11 · 794 阅读 · 4 评论 -
少说话多写代码之Python学习060——标准模块(双端队列)
双端队列可以从队列的两端加入和删除元素。比如,在需要按照元素增加的顺序来移除元素时非常有用。看下面的使用,先产生一个双端队列。from collections import dequeq = deque(range(5));print(q)输出deque([0, 1, 2, 3, 4])q.append(99)q.appendleft(999)print(q)输出...原创 2018-12-12 23:35:06 · 1004 阅读 · 0 评论 -
少说话多写代码之Python学习056——标准模块(自定义模块)
我们前面知道了如何导入外部模块,比如常用的math模块,import mathprint(math.sin(90))输出0.8939966636005579我们也可以自己定义一个模块,比如我的程序都在这个目录下,图1然后在当前目录下,再创建一个MyFirstLibrary1.py文件,里面代码如下,MyFirstLibrary1.py:print('这是自定义的...原创 2018-12-07 23:45:13 · 1372 阅读 · 0 评论 -
少说话多写代码之Python学习053——类的成员(生成器的使用:递归)
前面我们get到了一个技能,生成器。那么如果我们想依次输出一个数组,但是数组中又嵌套数组,又嵌套数组...嵌套未知层,那么如何实现?如果使用for可能就有点不方便了,这时我们需要递归。我们可以这样做,def myFlatten(seq): try: for list in seq: for item in myFlatten(list):...原创 2018-12-01 23:29:48 · 815 阅读 · 1 评论 -
少说话多写代码之Python学习052——类的成员(实现生成器)
前面我们知道类中定义__iter__可以实现迭代器,我们再看看另一个概念,叫生成器。生成器和迭代器是Python中近几年引入的显著地两个特性。生成器是用普通的函数语法定义的迭代器。又这样一个数组:sequen=[[1,2],[3,4],[5]]。我们要按顺序打印出来,def flatten(seq): for list in seq: for item in li...原创 2018-12-01 22:23:55 · 300 阅读 · 1 评论 -
少说话多写代码之Python学习035——创建函数01(如何定义函数)
不论哪种面向对象语言,基础是类,而类的主要元素是函数。那么我们看看在Python中如何定义函数,先看一个内建函数callable,判断函数是否可调用。import matha=1b=math.sqrtresult1=callable(a)print(result1)result2=callable(b)print(result2)输出FalseTrue学过编程的...原创 2018-11-03 23:07:10 · 892 阅读 · 0 评论 -
少说话多写代码之Python学习034——其他语句01(pass,del)
pass语句pass就是什么都不做,和C#中的一个分号语句很像。一般用作占位符,比如,这种情况,就是什么都不处理。name=input('请输入姓名')if len(name)<3: print('做什么')elif len(name)==3: #没什么可做的 passelse: print("干点啥")del语句 看下面对两个变量...原创 2018-11-01 22:58:06 · 915 阅读 · 0 评论 -
少说话多写代码之Python学习030——条件语句07(如何迭代-并行迭代)
迭代就是遍历一个集合,取所有的值出来。加入有两个数组,如何一起把数据取出来。看下面代码,names =['Jim','Hanmeimei','Lilei','Tom']ages=[13,14,12,15]for i in range(len(names)): print(names[i],'是',ages[i],'岁')输出Jim 是 13 岁Hanmeimei 是...原创 2018-10-24 22:58:20 · 579 阅读 · 1 评论 -
少说话多写代码之Python学习012——字典的方法01
clear方法清除字典中所有的项。无返回值。我们先看一个字典和另一个字典变量的赋值d={}d['name']='甄姬'd['attribute']='法师'print(d)输出{'name': '甄姬', 'attribute': '法师'}我们对比一下对x的操作,第一种对x赋一个空值,第二种对x使用clear方法。情形1:x={}y=xx['静夜思']='...原创 2018-09-27 23:05:41 · 240 阅读 · 0 评论 -
少说话多写代码之Python学习016——get方法练习
前面看了get的基本使用,我们再使用get进行练习,做一个建议的数据库查询功能。代码如下,初始化people对象,我们当作一个简易数据库使用。通过数据的参数打印出指定的值。people ={ '刘备':{ 'name':'玄德', 'adress':'扶桑村' }, '关羽':{ 'name':'云长', ...原创 2018-10-04 22:21:38 · 260 阅读 · 0 评论 -
少说话多写代码之Python学习022——赋值语句01(序列解包)
赋值语句在不同的语言中都有各自独特的表现,以及好玩的用法。刚开始学习编程时学习C语言,比如考试题总会让你分析赋值了一个指针呢还是一个值呢,到了堆呢还是到了栈,额额额。不过在Python里我们就别深究堆栈的问题啦,我们看看它的一些特别的用法吧。Python里可以多个赋值同时进行, a,b,c,d='哼','呵','哈','嘿'print(a,b,c,d)输出哼 呵 哈 嘿还...原创 2018-10-11 23:18:07 · 304 阅读 · 0 评论 -
少说话多写代码之Python学习011——字典的格式化字符串
前面我们知道了字符串的用法,格式化字符串也有一定的写法。如何配合字典来格式化字符串会非常方便,我们先看一段代码。phonebook={ '袁绍':'8880','曹操':'6660','刘备':'9990'}print("'刘备's phone number is %(刘备)s." %phonebook)输出'刘备's phone number is 9990.除...原创 2018-09-26 22:55:08 · 314 阅读 · 0 评论 -
少说话多写代码之Python学习015——字典的方法04
get方法get方法是访问字典项的方法,其限制比较少。普通情况下,如果访问字典不存在的项时会出错,比如d={}print(d['name'])报如下错误, File "D:/work/Python/dictionaryMethod4.py", line 5, in <module> print(d['name'])KeyError: 'name'...原创 2018-10-01 22:16:49 · 240 阅读 · 0 评论 -
少说话多写代码之Python学习010——字典的简单使用
Python中字典的基本操作有这些方法,len(d)返回d中项的数量;d[k]返回关联到键k的值;d[k]=v将值v关联到键k上del d[k]删除键为k的项k in d 检查d中是否含有键为k的项,字典可以添加任意简直,比如如下,以列表和字典比较,列表必须先声明长度才可以添加值,而字典不用,x=[]x[80]='哈喽'print(x)此处报错x={}x[80...原创 2018-09-25 22:57:58 · 271 阅读 · 0 评论