Python基础
python基础
来自万古的忧伤
努力,勿让自己继续活在后悔中
展开
-
Python基础进阶之线程
有些时候,比如下载图片,因为下载图片是一个耗时的操作。如果采用之前那种同步的方式下载。那效率肯会特别慢。这时候我们就可以考虑使用多线程的方式来下载图片。一 多线程介绍多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。最简单的比喻多线程就像火车的每一节车厢,而进程则是火车。车厢离开火车是无法跑动的,同理火车也可以有多节车厢。多线程的出现就是为了提高效率。同时它的出现也带来了一些问题。更多介绍请参考:https://baike.baidu.原创 2020-11-08 11:06:05 · 230 阅读 · 0 评论 -
Python基础进阶之进程
在Python中,可以通过os.fork()创建子进程,但是这种方式只能在linux和unix以及mac下面使用,不能跨平台,所以一般不推荐使用这种方式。使用multiprocessing模块也可以创建多进程,并且这种方式在写起来更加简单,并且支持跨平台。所以一般推荐使用multiprocessing的方式来写多进程的代码。一 什么是进程操作系统在运行过程中,一个程序运行起来就是一个进程。在Python中,多进程编程可以让我们的程序运行效率更高。同一时刻可以做更多的事情。因此多进程编程显得十分..原创 2020-11-08 10:50:14 · 150 阅读 · 0 评论 -
Python基础进阶之魔术方法(五)——可调用的对象和会话管理以及序列化对象
一 可调用的对象在Python中,一个特殊的魔术方法可以让类的实例的行为表现的像函数一样,你可以调用他们,将一个函数当做一个参数传到另外一个函数中等等。这是一个非常强大的特性让Python编程更加舒适甜美。call(self, [args…])允许一个类的实例像函数一样被调用。实质上说,这意味着x()与 x.call()是相同的。注意__call__参数可变。这意味着你可以定义__call__为其他你想要的函数,无论有多少个参数。例子如下:class Coornidate(object):原创 2020-11-08 09:53:47 · 340 阅读 · 0 评论 -
Python基础进阶之魔术方法(四)——控制属性的访问和设置以及创建定制的序列
一 控制属性的访问和设置1.__getattr__魔术方法在访问一个对象的某个属性的时候,如果这个属性不存在,那么就会执行__getattr__方法,将属性的名字传进去。如果这个属性存在,那么就不会调用__getattr__方法:class Person(object): def __init__(self,name): self.name = name def __getattr__(self, item): if item == 'age':原创 2020-11-08 09:39:15 · 175 阅读 · 0 评论 -
Python基础进阶之魔术方法(三)——运算符魔术方法
一 一元操作符和函数pos(self)魔术方法:在这个对象前面使用正号的时候执行的方法。neg(self)魔术方法:在这个对象前面使用负号的时候执行的方法。abs(self)魔术方法:在这个对象上使用abs函数的时候执行的方法。invert(self)魔术方法:在这个对象前面使用~的时候执行的方法。相关的示例代码如下:class Coornidate(object): def __init__(self,x,y): self.x = x s原创 2020-11-08 09:13:55 · 290 阅读 · 0 评论 -
Python基础进阶之魔术方法(二)——用于比较的魔术方法
有些时候我们想要比较两个对象。比如哪个对象更大,哪个对象更小,两个对象是否相等。如果我们不告诉Python要根据什么方式比较,那么Python是不知道如何比较的。这时候我们就可以实现一些比较的魔术方法来达到我们的需求。__cmp__魔术方法: __cmp__(self,other)这个方法在Python2中可以正常使用。如果self是大于other的,那么应该返回正数,如果self等于other,那么应该返回0,如果self小于other,那么应该返回负数。这个方法只能在Python2中起作用,在Py原创 2020-11-02 15:33:53 · 1390 阅读 · 0 评论 -
Python基础进阶之魔术方法(一)——常用魔术方法
一 __init__魔术方法初始化class Test(object): def __init__(self): self.name = "aaa" self.age = "bbb" def Name(self): print(self.name) def Age(self): print(self.age)test = Test()test.Age()test.Name()二 __del__魔术方法原创 2020-11-02 15:05:55 · 850 阅读 · 0 评论 -
Python基础进阶之gc模块
Python中的gc模块封装了许多和对象以及垃圾回收相关的方法一 导致引用计数+1的情况对象被创建,并被一个对象所引用。例如a=23对象被另外一个变量引用。例如b=a。对象被作为参数传递给函数。例如func(a)。对象被添加到容器中,比如添加到列表、元组、字典、集合中等。例如temp=[a]。导致引用计数-1的情况:引用这个对象的变量被删掉掉了。例如del a。引用这个对象的变量指向其他的对象了。例如a=‘abc’。函数作用域执行完毕后。比如一个函数中的临时变量,在这个函数执行结束后就.原创 2020-10-31 11:06:51 · 1743 阅读 · 0 评论 -
Python基础进阶之垃圾回收机制
一 引用计数在Python中,使用了引用计数这一技术实现内存管理。一个对象被创建完成后就有一个变量指向他,那么就说明他的引用计数为1,以后如果有其他变量指向他,引用计数也会相应增加,如果将一个变量不再执行这个对象,那么这个对象的引用计数减1。如果一个对象没有任何变量指向他,也即引用计数为0,那么这个对象会被Python回收。示例代码如下:class Person(object): def __init__(self,name): self.name = name def原创 2020-10-31 11:03:14 · 248 阅读 · 0 评论 -
Python基础进阶之对象池
一 小整数对象池在一个程序中,[-5,256]之间的数字是经常被使用的。因此Python在程序运行过程中,定义好了一个小整数池,也就是说从-5到256之间的数字都是提前在内存中建立好的,不会被系统回收,并且以后你创建了一个变量是在这个范围之内,那么都是同一个对象。同样对于单个字母也是一样的。示例:a = 1b = 1# 以下两个值是一样的print(id(a))print(id(b))a = -6b = -6# 以下两个值是不一样的print(id(a))print(id(b))#原创 2020-10-27 13:58:16 · 389 阅读 · 0 评论 -
Python基础进阶之元类
一 类也是对象在理解元类之前,你需要先掌握Python中的类在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这一点仍然成立:>>> class ObjectCreator(object):… pass…>>> my_object = ObjectCreator()>>> print my_object<__main__.ObjectCreator object at 0x8974f2c>原创 2020-10-27 11:56:23 · 166 阅读 · 0 评论 -
Python基础进阶之动态属性添加方法
一 动态添加属性动态添加属性,就是这个属性不是在类定义的时候添加的,而是在程序运行过程中添加的,动态添加属性有两种方法,第一个是直接通过对象名.属性名,第二个是通过setattr添加:第一种:使用对象名.属性名添加,示例如下:p.age = 18第二种:使用setattr函数添加,示例如下: if not hasattr(p,'age'): setattr(p,'age',18)hasattr是用来判断一个对象是否有某个属性,而setattr是用来给某个对象添加属性,并且指定这个属原创 2020-10-26 14:53:19 · 287 阅读 · 0 评论 -
Python基础进阶之装饰器
个人理解:用函数修饰函数 在执行函数之前我们做一些判断或者其他的逻辑操作,有点类似于go的func类型然后通过func 做一些修饰一 什么是装饰器装饰器利用了函数也可以作为参数传递和闭包的特性,可以让我们的函数在执行之前或者执行之后方便的添加一些代码。这样就可以做很多事情了,比如@classmethod装饰器可以将一个普通的方法设置为类方法,@staticmethod装饰器可以将一个普通的方法设置为静态方法等。所以明白了装饰器的原理以后,我们就可以自定义装饰器,从而实现我们自己的需求。二 理解拿.原创 2020-10-26 14:27:13 · 227 阅读 · 0 评论 -
Python基础进阶之闭包
一 闭包是什么东西如果在一个函数中,定义了另外一个函数,并且那个函数使用了外面函数的变量,并且外面那个函数返回了里面这个函数的引用,那么称为里面的这个函数为闭包。例如:def greet(name): def say_hello(): print('hello my name is %s' % name) return say_hello二 用闭包完成一个计算器def calculator(option): operator = None if op原创 2020-10-20 11:16:57 · 191 阅读 · 0 评论 -
Python基础进阶之生成器
生成器其实也是迭代器也是可迭代对象因为生成器是迭代器也是可迭代的对象,那么可以通过for循环进行遍历。并且因为她自身集成了迭代器和可迭代对象两个身份,因此他只能被遍历一次。一 为什么需要生成器假如现在有一个需求,我要打印从1-1亿的整形。如果我们采用普通的方式,直接调用range函数,那么程序肯定会崩溃,因为range(1,100000000)函数直接产生一个从1-1亿的列表,这个列表中的所有数据都是存放在内存中的,会导致内存爆满。这时候我们可以采用生成器来解决这个问题,生成器不会一次性把所有数据.原创 2020-10-19 15:44:30 · 177 阅读 · 0 评论 -
Python基础进阶之迭代器
一 什么是迭代器用来做什么的:用来给for...in...遍历的。已知的数据类型:list、dict、tuple、str、set、生成器。需要满足的条件:需要实现一个__iter__的方法,并且这个方法要返回一个迭代器对象。迭代器可以让我们访问集合的时候变得非常方便。之前我们通过for…in…的方式访问一个集合的时候,就是使用迭代器完成的。如果没有迭代器,那么我们只能通过while循环,每次循环的时候通过下标访问了。二 可迭代的对象用来做什么的:用来返回数据的,每次循环的时候都会调用原创 2020-10-19 14:04:13 · 207 阅读 · 0 评论 -
Python基础进阶之虚拟环境
一 为什么需要虚拟环境到目前位置,我们所有的第三方包安装都是直接通过pip install xx的方式进行安装的,这样安装会将那个包安装到你的系统级的Python环境中。但是这样有一个问题,就是如果你现在用Django 1.10.x写了个网站,然后你的领导跟你说,之前有一个旧项目是用Django 0.9开发的,让你来维护,但是Django 1.10不再兼容Django 0.9的一些语法了。这时候就会碰到一个问题,我如何在我的电脑中同时拥有Django 1.10和Django 0.9两套环境呢?这时候我们就原创 2020-10-15 11:28:14 · 130 阅读 · 0 评论 -
Python基础之补充知识点(三目运算符 列表生成式 装饰器)
一 列表生成式列表生成式,可以将好几行的代码写在一行中。比如要获取一个从1-100的整数值的列表。如果通过传统的方式,那么只能这样写:values = []for x in range(1,101): value.append(x)如果通过列表生成式,那么可以通过以下一行代码实现:values = [x for x in range(1,101)]当然也可以在列表生成式的时候,判断条件,只有满足条件的才会被加入到列表中:values = [x for x in range(1,10原创 2020-10-14 14:11:17 · 279 阅读 · 1 评论 -
Python基础之模块管理
一 为什么需要模块和包随着项目越来越大,所有代码都放在一个文件中,已经不能满足我们的需求了。这时候就要将代码进行整理了,模块和包的出现就是为了解决这个问题的。模块可以将一些相关联的代码组合在一个py文件中,包可以将一些相关联的模块组合在一个文件夹中。二 将一个模块导入到当前文件中的几种方式1.import导入某个模块。以后要使用模块中的函数或者方法或者变量,则需要使用模块名.xxx的形式调用。2.from xxx import xxx从某个模块中导入某个对象或者方法等。也可以一次性的从模块中导入原创 2020-10-14 11:53:36 · 6405 阅读 · 1 评论 -
Python练习(七)
宠物管理系统添加宠物。显示所有宠物。宠物信息用文件存储。用面向对象的方式实现。import osimport jsonimport datetimeclass File(object): def Rfile(self): fp = open("test.txt", "r+", encoding='utf-8') data = fp.read() if data == "": return {}原创 2020-10-10 13:45:10 · 125 阅读 · 0 评论 -
Python基础之异常处理
一 程序开发中为什么需要异常处理有些时候我们的程序在运行过程中可能会有意想不到的事情发生,这种情况就叫做异常,异常如果不处理好,可能直接导致我们的程序退出崩溃。因此我们要对异常进行处理,来确保我们的程序能够稳健的运行。二 异常处理的语法try: # 你感觉可能会崩溃的代码except 异常名字: # try语句出现异常的时候执行的代码else: # try语句中没有抛出异常的时候执行的代码finally: # 不管程序有没有抛出异常,都会执行的代码示例:tr原创 2020-10-10 11:41:08 · 271 阅读 · 0 评论 -
Python基础之单例
一 __new__函数__new__方法是用来控制这个类创建对象的执行逻辑。这个方法是在对象还没有创建之前就会执行的。而__init__方法是在对象创建完毕后才执行。比如看下以下代码的执行顺序:class Person(object): # __new__方法的参数不是self,而是cls,代表当前这个类 def __new__(cls,*args,**kwargs): print('new方法执行') # 一定要返回对象,不然就不会创建对象原创 2020-10-09 16:24:39 · 222 阅读 · 0 评论 -
Python基础之面对对象
一 什么是面向对象面向对象是现代语言必备的一个特性。传统的面向过程编程(模块封装都是通过函数实现的,类似于C语言),不符合人类思考的一种方式。比如人吃饭这种行为,如果使用面向过程编程,那么是首先定义一个吃饭的行为,然后再把这个人传过去。这明显是不符合人类的思考方式的,人类正常的思考方式应该是,吃饭这个行为是属于人类的,应该由人的这个对象自己去执行。这种思考方式的转变,就是面向对象。面向对象把所有属于某种物体(比如人)的属性和行为全都定义在这个物体上,比如年龄,身高,体重这些是属性,比如招手,跑步,吃饭这些原创 2020-10-09 15:37:56 · 408 阅读 · 0 评论 -
Python练习(六)
将练习4的学生管理系统,添加文件存储的功能。要求如下:要求记录学生的学号、姓名、年龄、所属班级信息。可以新增学生。可以列出所有学生。可以根据学号查找学生。需要使用函数来模块化。要求使用文件来存储信息,下次打开系统,数据依然存在。将第四天的学生管理系统,添加文件存储的功能。要求如下:要求记录学生的学号、姓名、年龄、所属班级信息。可以新增学生。可以列出所有学生。可以根据学号查找学生。需要使用函数来模块化。要求使用文件来存储信息,下次打开系统,数据依然存在。import o原创 2020-10-04 11:00:54 · 207 阅读 · 0 评论 -
Python基础之文件操作
一、打开和关闭文件1.打开文件 f = open('xxx.txt','w') #以写的方式打开一个文件2.关闭文件 f = open('xxx.txt','w') f.close() #关闭文件二、文件的打开模式打开模式说明r(read)以只读的方式打开。文件的指针将会放在文件的开头。这是默认的模式w(write)以只写的方式。如果该文件已经存在则将其覆盖。如果不存在,则创建一个文件用于写入。a(append)以追加的方式打开文件。如果该文件存在将新原创 2020-10-04 10:58:42 · 500 阅读 · 0 评论 -
Python练习(五)
1.实现一个函数,用于求两个数之和。def Add(a,b): return a+bprint(Add(1,2))print(lambda a,b:a+b)2.实现一个函数,可以求任意多个数之和。def Add(*args): sum = 0 for i in args: sum += i return sumprint(Add(1,2,3,4,5,6,7,1))3.用函数把练习04的学生管理系统模块化(每个功能用一个函数模块)。#(1原创 2020-09-30 15:17:43 · 179 阅读 · 0 评论 -
Python基础之函数
一 为什么需要函数有时候,一些代码可能要在许多地方使用。如果采用传统的方式,一直重复编写相同的代码,那么代码将变得非常糟糕,并且非常难以维护。这时候我们就可以采用函数,来把一些重复执行的代码封装成一个函数,以后要再调用相同的代码的时候,就只要调用这个函数就可以了。二 函数定义和调用1.定义函数语法是使用def: def 函数名(参数,可以为空): 代码块 # 示例: def greet(): print('hello world')2.调用函数语法是使用这个函数的名字原创 2020-09-30 15:14:28 · 176 阅读 · 0 评论 -
Python练习(四)
1.给以下列表做逆序操作:a = [1,2,3,4,5,6,7,8,9]a = [1,2,3,4,5,6,7,8,9]a = a[-1::-1]print(a)2.实现一个学生管理系统# """# 要求如下:# 要求记录学生的学号,姓名,年龄,所属班级信息。# 可以新增学生。# 可以列出所有学生。# 可以根据学号查找学生。# 可以根据学号删除学生。# 提示:用字典存储“一个学生”的信息,用列表存储所有学生的字典对象。# """dataall={}i = 1while原创 2020-09-29 17:02:37 · 160 阅读 · 0 评论 -
Python基础之字典
一 为什么需要字典有时候我们需要存储一组相关的数据的时候,比如要存储一个人的信息,那么有username,age,birthday等,如果这些信息都存储在列表中,或者数组中,比如[‘username’,‘age’,‘birthday’]那么用起来可能不是很方便。比较方便的操作是,我直接通过username这个key就可以拿到这个值,我通过username就可以给这个key设置值,那么就可以通过字典的方式实现我们的需求。二 字典基础1.创建字典我们可以通过两种方式创建字典: person = {"u原创 2020-09-29 16:53:28 · 139 阅读 · 0 评论 -
Python基础之元组
一 什么是元组元组的使用与列表相似,不同之处在于元组是不可修改的,元组使用圆括号,而列表使用中括号。二 定义元组1.使用逗号的方法 aTuple = 1,2,3 #这样就定义好了一个元组 print(aTuple)2.使用圆括号的方法 aTuple = (1,2,3) print(aTuple)3.使用tuple函数aList = [1,2,3]aTuple = tuple(aList)print(aTuple)4.定义只有一个元素的元组aTuple = 12, # 这样就定原创 2020-09-28 18:40:51 · 358 阅读 · 0 评论 -
Python基础之列表
一 为什么需要列表二 列表介绍1. 如何定义列表使用左右两个中括号的形式 fruits = ['apple','banana','orange'] # 列表中的值,可以为不同的数据类型 test_list = ['a',1]2.如何取列表中的值列表支持下标操作,跟字符串的下标操作是一样的。 fruits = ['apple','banana','orange'] a = fruits[0] b = fruits[1] c = fruits[2]3.列表的遍历使用for和whi原创 2020-09-28 17:28:50 · 227 阅读 · 0 评论 -
Python练习(三)
一 按要求格式化字符串import retext = """I am xiao xiao. I have over 8 years of experience in marketing. I am the team manager of marketing for HP since 2013"""#1.把以上字符串的所有空格删掉,并保存在另外一个新的字符串中。a = text.replace(" ","")print(a)print("空格"," "*len(re.compile(" ").f原创 2020-09-28 13:43:40 · 187 阅读 · 0 评论 -
Python基础之字符串处理
一 什么是字符串1.在Python中,使用单引号或者双引号括起来的,就是字符串。2.字符串也可以使用六个单引号或者六个双引号括起来。3.在Python3中,字符串分为两种类型,第一种是str,是unicode字符串,第二种是bytes,就是经过编码后的字符串,是一种字节码,适用于保存在磁盘上或者在网络上传输。二 字符串拼接...原创 2020-09-28 13:40:48 · 550 阅读 · 0 评论 -
Python练习(二)
一、实现一个计算体脂率的程序用户输入以下信息:性别(男性还是女性)。腰围(cm)。体重(kg)。然后打印体脂率的结果。体脂率计算公式如下:成年女性的体脂率计算公式:参数 a=腰围(cm)×0.74参数 b=体重(kg)×0.082+34.89体脂肪重量(kg)=a-b体脂率=(身体脂肪总重量÷体重)×100成年男性的体脂率计算公式:参数 a=腰围(cm)×0.74参数 b=体重(kg)×0.082+44.74体脂肪重量(kg)=a-b体脂率=(身体脂肪总重量÷体重)×100原创 2020-09-22 18:13:03 · 764 阅读 · 0 评论 -
Python基础之循环
一、While1.示例 num = 0 while num < 10: print(num) num += 12.求1-100整数之和result = 0index = 1while index <= 100: result = result + index index += 1print(result)3.猜数字游戏# 先来定义一个要猜的数字value = 61input_value = input("请输入数字:")input_val原创 2020-09-22 14:56:48 · 193 阅读 · 0 评论 -
Python基础之if判断
1.bool数据类型真和假,只有两个值,就是True和False。只有数据类型是一样的,才有必要进行判断,否则判断都不用判断,直接就是不相等。2.if语句使用的语法if False: print('success')else: print('fail')3.else:语句if False: print('success')else: print('fail')4.比较运算符(1)a==b:a和b是否相等.a = 1b = 2if a == b:原创 2020-09-22 07:29:54 · 1924 阅读 · 0 评论 -
Python基础之占位符
参考:https://www.cnblogs.com/fat39/p/7159881.html打印普通的字符串:格式化输出: # 整形:%d # 字符串类型:%s # 浮点类型: %f # 字符串变量类型的格式化 name = 'zhiliao' print('my name is %s'%name) # 整形变量的格式化 age = 2147483648 print('my age is %d'%age) # 浮点类型变量的格式化 price = 18.9 p原创 2020-09-22 07:20:40 · 1563 阅读 · 0 评论 -
Python练习(一)
1.实现一个加法计算器,可以接收用户输入的两个数据,然后计算其相加的结果。#1.加法计算器one=input(“请输入第一个数字:”)two=input(“请输入第二个数字:”)c= int(one) + int(two)print©2.有变量a=’12.3’,想要将其转换为整形,可以怎么做?#类型转换a=‘12.6’a=float(a)a=int(a)print(a)#字符串分割a=‘12.6’a= a.split(".")print(a[0])...原创 2020-09-21 09:46:36 · 308 阅读 · 0 评论 -
Python基础之类型转换与算术运算符
一、注释1.注释:对程序进行标注和说明,增加程序的可读性。程序运行的时候会自动忽略注释。2.单行注释:使用#的形式。但是#的形式只能注释一行,如果有多行,就不方便了3.多行注释:使用’’‘注释’’'的形式。使用字符串的形式进行注释,语法是使用六个单引号或者六个双引号。# 单行注释'''test多行注释'''二、输入输出函数input函数:用来接收用户输入的数据。input函数接收到的参数永远都是字符串print函数:用来把数据打印到控制台的。a = input("输入字符")p原创 2020-09-21 09:35:20 · 828 阅读 · 0 评论 -
Python环境安装
1.介绍Python目前最新版本是Python3.7。可以到官网下载:https://www.python.org/。2.安装3.相关ide可以使用pycharm 或者vscode 亦或者是 sublime我个人使用的pycharm 为什么呢 因为我比较菜 嘿嘿原创 2020-09-20 20:53:58 · 77 阅读 · 0 评论