![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
一只慢慢飞的笨笨鸟
慢慢飞的笨笨鸟。
展开
-
python之多线程
一个计算机系统中可以同时有多个不相交的事件发生,比如微信和QQ,此类事件在计算机中被称为进程,即一台计算机系统中可以同时存在多个进程。微信中可以同时实现语音通话和发消息聊天,该类事件被称为一个进程中的多个线程。进程之间相互独立,但线程之间可以共同享用资源。我们在商超买东西时,当只有一个收银台时,会导致排很长的队。如果有多个收银台同时工作的话,会大大提高效率。这是生活中的多线程,即多个线程同时工作。我们接下来用代码案例讲解多线程与单线程的区别。单线程即在程序运行过程中,按照一定的先后顺序运行。多线原创 2020-05-29 15:17:23 · 214 阅读 · 0 评论 -
python之异常的检测和处理
当代码出现问题时,系统会异常错误。我们现在想实现的是在代码出现问题的时候获取到异常信息,并做处理。try: 监控异常except exception: 处理异常finally: 正常运行理论不大好懂,我们直接上案例。在计算除法时,如果除数是0的话,会报错ZeroDivisionError。我们现在可以获取到这个ZeroDivisionError异常,并作出处理。try: 1/0except ZeroDivisionError: pri原创 2020-05-27 10:53:16 · 683 阅读 · 0 评论 -
python之文件的常用操作
readline()可以读取一行内容readlines()可以读取多行内容,可以与for循环联用。tell()输出目前文件指针的位置read()读取文件所有内容read(x)读取x个字符seek(a)偏移的位置,从开头开始计数seek(a, b) b=0:从开头开始算偏移; b=1:从当前位置开始计偏移; b=2:从末尾开始计偏移。...原创 2020-05-25 11:19:36 · 150 阅读 · 0 评论 -
python之文件read,write
计算机操作系统中,我们在对文件进行加工之前,需要先将文件打开,再进行读r、写w操作,操作完成后,还需要对文件进行关闭。#1f1 = open('text.txt', 'w') #打开文件text.txtf1.write('hello, file') #向文件中写字符串f1.write('like you') f1.close() #关闭文件#2f2 = open('text.txt', 'w') #覆盖了文件中原来的内容f2.write('yjy')f2.c原创 2020-05-21 17:29:23 · 279 阅读 · 0 评论 -
python之__call__
往常中,我们调用函数时 “函数名(参数)” ;我们需要调用类的方法时,是通过类的实例调用的 “类名.方法名(canshu )”。现在我们想实现 在调用类方法时,可以 “实例名(参数)”,那么能实现吗?__call__方法可以帮我们实现这一效果。class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __call__(原创 2020-05-21 15:28:21 · 143 阅读 · 0 评论 -
python之__slots__
因为python是动态语言,在使用时可以动态的添加属性。现在想要限制类的属性,__slots__可以实现这个效果。先看代码:class Person(object): __slots__ = ('name', 'gender') def __init__(self, name, gender): self.name = name self.gender = gender class Student(Person): __sl原创 2020-05-21 14:43:11 · 163 阅读 · 0 评论 -
python之完善decorator
装饰器可以给函数动态添加功能,但是装饰器后,再输出原函数的函数名的话,会发现输出的不是原函数的函数名了。def new_fn(text): def decorator_new_fn(f): def fn(x): print ('[%s] call ' + f.__name__ +'()') % (text) return f(x) return fn return decorator_new_fn@new原创 2020-05-19 15:11:57 · 420 阅读 · 0 评论 -
python之编写带参数decorator
在学习带参数的decorator之前,我们先回顾下无参数的decorator。以@log装饰器为例讲解:无参数decoratordef new_fn(f): def fn(x): print 'call '+f.__name__+'()' return f(x) return fn@new_fndef f(x): return x*xprint f(2)==> call f()==> 4像这种装饰器的参数除了原函数以原创 2020-05-19 10:35:49 · 312 阅读 · 0 评论 -
python之*args,**kw
python中函数的参数分为普通参数、默认参数、非关键字参数、关键字参数,下面我们就具体讨论下各个参数类型。比如:def func(a, b, c = 0, *args, **kw): print 'a = ' + str(a) #str()函数是将a转换成str类型,因为 + 左右类型都应为str类型 print 'b = ' + str(b) print 'c = ' + str(c) print 'args: ' + str(args) print原创 2020-05-18 14:55:04 · 297 阅读 · 0 评论 -
python之闭包
在函数内部和函数外部定义的函数是一样的,只是函数内部定义的函数无法被外部函数调用。def g(): def f(): return 1+2 return 0像上面这种 f() 函数放在了 g() 函数内部,则只能在g() 函数里面被使用,在 g() 函数外部是无效的。def calc_sum(lst): def lazy_sum(): return sum(lst) return lazy_sum想上面代码案例,lazy..原创 2020-05-15 15:30:22 · 104 阅读 · 0 评论 -
python之decorator装饰器
我们在运行一个函数时,想要动态地给这个函数添加一些功能,又不想在原函数上进行更改,那怎么做呢?比如我们想在调用函数时输出log语句,我们首先想到的是在函数内添加print语句,这个pass掉,不符合前提条件。我们之前还学过高阶函数,因为高阶函数可以传入一个函数,也可以返回一个函数。我们可以利用高阶函数,在高阶函数里对原函数进行加工,然后返回加工后的原函数,实现对该函数添加输出log语句的功能。理论话语不好理解,下面我们看实例操作。def f1(x): #原函数 return x*xd原创 2020-05-15 17:31:56 · 163 阅读 · 0 评论 -
python之匿名函数
python中有高阶函数,即以函数名作为参数,传入到函数里使用。匿名函数使用起来比较方便,无需显式定义参数函数。还是以map函数为例讲解。print map(lambda x: x*x, [1, 2, 3])==> [1, 4, 9]匿名函数的关键字是lambda,lambda紧接着是参数,参数与函数体以 ‘:’区分开。需要强调的是,匿名函数只能有一个表达式,且不需要return,自动返回表达式的结果。总结下:匿名函数说白了就是在函数的参数地方,定义一个没有名字的函数作为其参数。若要.原创 2020-05-12 10:57:52 · 273 阅读 · 0 评论 -
python之map()函数
python中有map函数,map函数是一个高阶函数,接收一个函数作为参数,还有一个list。其作用是高阶函数对list中的每个元素进行加工,然后生成一个新的list,并将其返回。def f(x): return x*xprint map(f, [1, 2, 3])==> [1, 4, 9]list不要求一定是数字类型,可以是任意类型。例:假设用户输入的英文名不规范,要求输入的英文名规则是首字母大写,其他字母小写。请用map表示出结果。names = ['ada', '原创 2020-05-12 10:43:19 · 271 阅读 · 0 评论 -
python之类型转换
普通的数据可以强制转换数据类型,比如>>>a = 3.2>>>int(a)3>>>b = 8>>>float(b)8.0那么分数能进行数据类型转换吗?可以的。因为我们学过python中的特殊方法__xx__, 在使用python中没有的功能时,系统会自动调用该功能对应的特殊方法,达到同样的效果。我们以有理数中分数的四则运算为例子,进行对应的int,float的数据类型转换。def gcd(a, b): #求原创 2020-05-09 11:29:50 · 304 阅读 · 0 评论 -
python之有理数运算Rational类
python中可以做的数学运算,仅局限在了基本数据类型int、float。因为我们前面学过了特殊方法,所以我们现在也可以进行有理数运算、矩阵运算,今天我们就先讲解有理数运算,矩阵运算与有理数运算方法基本一样,都要用到特殊方法进行定义运算过程。有理数分为整数和分数,整数即int,不需要讲解,今天我们就说下分数的数学运算。分数的数学运算要注意最后运算结果化为最简形,化为最简形就需要事先计算出分子分母的最大公约数。表示有理数类我们用Rational进行表示。具体的事先过程我们以一例子进行讲解。在Ratio原创 2020-05-09 11:17:51 · 5192 阅读 · 4 评论 -
python之__len__()
在List一节中,我们要求List列表中有多少个元素时,直接用len(L)即可获得列表元素个数。那现在我想求类中实例的个数,用len()函数没有效果,那怎么办呢?这就需要我们今天即将介绍的__len__()特殊方法来解决了。下面以一个例子来介绍该特殊方法的使用:斐波那契数列是由0,1,1, 2, 3, 5, 8...构成请编写一个Fib类,Fib(10)表示数列的前10个元素,prin...原创 2020-05-08 15:35:49 · 4757 阅读 · 0 评论 -
python之__cmp__()
在python中,对str,int等数据类型进行排序时,使用python内置的sorted()函数里默认的cmp函数对其排序。那如果要对实例对象进行排序,怎么操作呢?此时就要用到特殊方法__cmp__(),在类中对__cmp__()根据要求定义,即可实现对实例对象进行排序。例子:按照名字,由小到大排序;名字相同时,按照成绩由高到低排序。以上述例子,具体说下函数__cmp__(self,...原创 2020-05-07 17:47:56 · 1843 阅读 · 0 评论 -
python之__str__()与__repr__()的区别
在专门学习python的特殊方法时,廖雪峰老师是将__str__()与__repr__()两个函数一起讲的,而且我觉得他讲的__repr__()是一带而过,当时我是没弄清楚两个函数是什么区别与联系的,经过查阅资料,现在整理下来,供大家学习参考。__str__()与__repr__()函数都是将实例变成字符串的,区别是__str__()是面向用户的,而__repr__()是面向开发人员的。类中只...原创 2020-05-07 16:28:47 · 345 阅读 · 0 评论 -
python之获取对象信息
我们之前有学过isinstance(),该函数是判断某实例是否是某类型的实例对象。现在我们想获取一个实例对象的更多信息,怎么获取呢?接下来我们将学习dir(), type(), getattr(), setattr(),来获取实例的更多信息。目录type()获取变量的类型dir()获取实例变量的所有属性getattr()获取已知实例的已知属性的属性值setattr()给对象添加...原创 2020-05-07 11:28:27 · 372 阅读 · 0 评论 -
python之多重继承
多重继承 即一个类继承自多个类,之后该类就可以拥有其父类的属性了。原创 2020-05-07 09:49:12 · 317 阅读 · 0 评论 -
python之多态
多态的作用:即不同内容的函数拥有同一个函数名,这样在类外即可通过同一个函数名调用不同内容的函数。多态的特点:对象所属的类之间,继承关系可有可无(这点是与C++里的多态不同处,C++中使用多态的类之间必须是继承关系)。由以上例子可以看出:在继承类中,可以使用多态;非继承类中也可以使用多态。同名函数中传入类实例对象即可。欢迎大家和我一起交流学习,我的公众号是:...原创 2020-05-06 14:43:28 · 2757 阅读 · 0 评论 -
python之判断类型
python中,isinstance()可以判断数据类型,比如int, str,或是我们自己定义的类,都是可以用isinstance()来判断的。以上例子中,Student类与Teacher类都继承自Person类,t为Teacher类的一个实例。由上例可以看出,子类的实例是子类的类型,同时也是其父类的类型,但父类的类型不是子类的类型。注意isinstance()的使用方式。...原创 2020-05-06 10:36:47 · 3387 阅读 · 0 评论 -
python之继承类
一个班级里,分学生和班长,班长也是学生,只是比一般学生多了班长的职责。现在我们有学生类,定义班长类时,我们只需要在学生属性的基础上添加上职位属性。像此种情况,就是我们在python中学到的继承思想,即已有学生类,班长类有学生类的全部属性,且还需要在学生类的基础上添加上自己独有的属性。如以上例子,Monitor类继承自Student类,类名后面的括号中填写继承的类名,没有继承类名的需要填写o...原创 2020-05-06 10:14:52 · 502 阅读 · 0 评论 -
python之定义类方法
python中方法也分实例方法与类方法,原来我们接触到的类中的方法都是实例方法,今天我们将介绍下类方法。类方法需要装饰器@classmethod来装饰,其参数cls指的是类名,类方法中cls.__count即Person.__count;实例方法的参数self是指向调用它的实例对象。类方法与实例方法的区别是:类方法中操作的是类属性;实例方法中即可操作实例属性,又可操作类属性,不过类属性...原创 2020-05-01 21:06:48 · 289 阅读 · 0 评论 -
python之给实例添加方法属性
前面我们有学过类的属性,比如私有属性,常用属性原创 2020-04-30 15:08:06 · 694 阅读 · 2 评论 -
python之定义实例方法、访问私有属性
讲解今天的内容前,我们先来回顾下之前章节学过的访问限制内容。我们知道了:形式为 “__x”的实例属性为私有属性,不能被外界访问; 形式为 “__x__”的实例属性可以被外界访问,但被称为特殊属性,不建议将普通属性如此定义; 形式为 “_x” 的实例属性可以被外部访问,但是按照习惯,他们不应该被外部访问。 形式为 “__x” 的类属性同样不能被外部访问。虽然以上形式为 “__x” 的实例...原创 2020-04-29 10:36:53 · 1466 阅读 · 0 评论 -
python之类属性与实例属性冲突
上一节中我们讲到,当通过实例改变类属性的值时,实际达到的效果是给实例绑定了一个属性,且该属性与类属性同名。>>>class Person(object):>>> count = 0>>> def __init__(self, name):>>> self.name = name>&...原创 2020-04-28 14:48:02 · 334 阅读 · 0 评论 -
python之创建类属性
如果您接触过c++的话,那您在学习这节时会容易些,我尽量解释详细点。我们前几节已经学习了python中如何定义类,且学习了如何在类中定义函数,那么在python类中能创建属性吗,即我们常说的变量?答案是可以的。因为python是动态语言,在创建了python实例时,可以随时定义实例属性,那实例属性与类属性有什么区别呢?在学习类属性之前,我们先来搞清楚实例属性与类属性的区别。实例的属性只能被...原创 2020-04-28 13:52:11 · 936 阅读 · 0 评论 -
python之访问限制
一般情况下我们会给一个实例绑定很多属性,但是有些属性比较私人化,不想被外部调用,那怎么才能实现不被外部调用呢?python中对属性名称做改变 - 属性名称以双下划线'__' 开头,将实现这个功能。由上面可知,当属性名以双下划线 ‘__' 开头时,即定义类型为‘__x’ , 属性名不能被外部访问;但是如果其属性名后面又加上了双下划线 '__', 即定义类型为 '__x__' , 其右能够被...原创 2020-04-24 16:38:13 · 561 阅读 · 0 评论 -
python之初始化实例属性
对于实例来讲,就同一种类型的实例,会拥有相同的属性名称,比如人Person,需要有姓名name,性别gender,年龄age。因为python是动态语言,如果在定义实例时随时给属性赋值,实例多了会比较麻烦,那能不能事先把实例中的相同属性的名称定义好,在创建实例时直接赋值呢?可以。这就用到了python中的__init__()函数,当使用类创建实例时,该函数会被自动调用。class Per...原创 2020-04-23 10:36:03 · 618 阅读 · 0 评论 -
python之定义类
python中的类与C++中的类很相似,不同的是一些小细节的表达方式。python中有int类型、float类型等,我们定义的类就是此类别的类型,只不过是认为定义的。定义类需要关键字class,之后是一个类名,我们编程习惯将类名首字母大写。类名后面有个括号,括号里是继承的类名,继承我们将在后面仔细讲解,大家理解此处即可,目前我们的继承类大多是object类。class Person(ob...原创 2020-04-22 17:13:47 · 400 阅读 · 0 评论 -
python之删除list元素
承接原来的例子。L = ['xiaoming', 'zhangyang', 'honghong', 'Tidy']Tidy刚转来由于不适应新班级的氛围,现又要转走了(熊孩子><!)。那么现在问题来了,怎么将Tidy名字从list中去除呢?方法如下: 如果要去除的元素是在list列表的最后,则可以通过pop()方法去除。 >>>L.pop() 'T...原创 2020-04-21 11:35:39 · 206 阅读 · 0 评论 -
python之添加新元素
承接原来的例子L = ['xiaoming', 'zhangyang', 'honghong']现在班里新来了一名同学Tidy,由于还没有考试,老师要将他的名字放在所有同学的最后。那么问题来了:如何将新同学的名字添加到列表的最后呢? python有个自带的append()方法,可以在list列表的最后添加元素。 >>>L.append('Tidy') >...原创 2020-04-21 11:34:19 · 1139 阅读 · 0 评论 -
python之倒序访问list
将学生根据成绩由高到低排名,并将学生名字保存到一个list列表里。L = ['xiaoming', 'zhangyang', 'honghong']现在我们要获取最后一名学生的名字,我们需要获取到列表的长度len,然后根据索引访问list,L[len-1]。有没有简便点的方法呢,不用知道列表长度,直接访问最后一名?可以。这就是今天我们讲解的倒序访问list。我们规定最后一个list...原创 2020-04-21 11:32:48 · 456 阅读 · 0 评论 -
python之按照索引访问list
L =['a', 'b', 3]如同数据结构中的线性表,python中list元素也可以按照索引被访问。如同线性表,list的首元素索引号也为0。>>>printL[0]a>>>print L[3]Traceback (most recent call last): File "<stdin>", line 1, in ...原创 2020-04-21 11:31:41 · 676 阅读 · 0 评论 -
python之创建list
list是python语言的一种内置的数据类型。list是数学意义上的有序集合,也就是说list列表里的内容是有序的,可以对list里面的元素进行增加、删除操作。通常用[]将一些元素括起来,就成为一个list对象。['a', 'b', 'c']将list赋值给一个变量,可以通过变量引用列表元素。>>>L =['a', 'b', 'c']>>>p...原创 2020-04-21 11:30:24 · 1785 阅读 · 0 评论 -
python之整数、浮点数、布尔类型
1、整数、浮点数python中整数、浮点数的计算方式与数学中一样,整数计算结果为整数,浮点数计算结果为浮点数。>>>1 + 23>>>1.0 * 22.0不同的是,python中的整数相除时,结果为整数。(与C, C++类似)>>> 3 / 21不过提供了取余:(与C, C++类似)>>>...原创 2020-04-21 11:28:36 · 557 阅读 · 0 评论 -
python之Unicode字符串
计算机只能处理数字,当遇到文本时,需要先将文本转变成数字,再被计算机处理。最早的计算机采用8个比特(bit)表示一个字节(byte),所以一个字节可以表示的最大整数为255(11111111=十进制255)。0-255可以表示大小写字母,数字,一些字符。这个编码表被称为ASCII编码。比如大写的A为65,小写的z为122。一个汉字至少需要两个字节表示,在表示时还不能和ACSII编码重合,所以中...原创 2020-04-19 15:59:55 · 309 阅读 · 0 评论 -
python之raw字符串、多行字符串
当一个字符串中有很多需要转义的字符时,挨个进行转义太麻烦了,那么有没有比较简便点的方式呢?有的呀。1、当一个字符串中有很多需要转义的字符时,我们可以在字符串的最前面添加 'r', 然后再进行书写字符串。比如: print r'This is a dog' 但是添加 'r' 的方法对于字符串里既有双引号"" 又有单引号''不起作用,会报错 SyntaxError: invalid synt...原创 2020-04-19 15:58:58 · 214 阅读 · 0 评论 -
python之__future__
python新版本会引入一些新的功能,但由于新旧版本有些功能模块不兼容,正常情况下,旧版本中是无法使用这些新功能的。正是因为如此,一些新功能被放在了__future__模块里,在旧版本中通过导入__future__模块,也可以实现使用新版本中新功能的效果。比如在python2.x版本中,除法 '/' 的结果已经是整数;而在python3.x版本中,除法 '/' 的结果可以是小数了。那么想在旧版...原创 2020-04-16 11:00:48 · 1209 阅读 · 0 评论