python
文章平均质量分 73
python基础知识
CF_S
这个作者很懒,什么都没留下…
展开
-
Python学习之路----json 和 pickle
JSON在各种编程语言中都有各自规定的数据类型,且根据硬件平台的不同,占用的字节大小也不同。如果想要不同类型的语言之间进行通信,就需要转化成json字符串进行。高级数据类型与JSON之间的转化#将列表转化成字符串并存入文件import jsonfile_dump = open('dump1','w',encoding = 'utf8')list1 = [1,2.2,'hello',(4,5,6),{'name':'zhangsan'}]x = json.dumps(list1)p原创 2020-06-13 17:02:33 · 107 阅读 · 0 评论 -
Python学习之路-----像字典操作对象
class Person(object): def __init__(self,age,name): self.age = age self.name = name def __str__(self): return 'name:{} age:{}'.format(self.name,self.age) def __getitem__(self,key): print('__getitem__ wa.原创 2020-06-07 16:16:35 · 158 阅读 · 0 评论 -
Python学习之路-----列表推导式
列表推导式常用于生成简单有规律的列表,利用简洁的语法往往能达到令人意外的效果。#列表推导式list1 = [x for x in range(10)]print(list1)list1 = [x for x in range(10) if x % 2 == 0]print(list1)list1 = [x for x in range(10) if x % 2]print(list1)points = [(x,y) for x in range(1,5) for y in ra原创 2020-05-24 09:04:58 · 312 阅读 · 0 评论 -
Python学习之路-----多进程、多线程并发TCP服务器
并发服务器在实际的应用过程中,一个服务器总是对应不止一个客户端,并及时地为已经连上的客户端提供服务。传统的单进程服务模型已经不能满足这样的需求,因此利用多进程和多线程可以实现这样的需求。创建TCP服务器的流程创建TCP套接字; 将套接字与服务端口绑定; listen(),开始监听客户端的请求; accept(),接受一个链接请求,得到新的套接字和客户端的地址; 使用新的套接字收...原创 2019-11-16 09:43:08 · 1253 阅读 · 0 评论 -
Python学习之路-----列表生成式、生成器、迭代器
列表生成式顾名思义,列表生成式是用来专门生成list的表达式,是一小段很精简的代码。基本的语法是: [变量表达式 for 变量 in 表达式],请看下面的例子。a = [x ** 2 for x in range(1, 10)]b = [x * x for x in range(1, 11) if x % 2 == 0]print(type(a))print(...原创 2019-10-07 16:54:36 · 142 阅读 · 0 评论 -
Python学习之路-----异常传递、嵌套与自定义异常
异常嵌套与传递 if条件语句和while循环语句可以嵌套使用,异常同样可以。下面演示一个基本的例子:try: f = open("1.txt","r") try: conent = f.read() print(conent) f.close() except NameError as error: ...原创 2018-07-07 10:17:30 · 5603 阅读 · 0 评论 -
Python学习之路-----__new__()方法与单例模式、
__new__方法 定义一个类,并且创建一个实例对象的代码如下。就这样的几行代码,Python解释器主要做了两件事:(1)、调用__new__()方法给实例对象开辟空间并返回这个对象(2)、调用__init__方法给实例对象的属性赋值。class Dog: def __init__(self,name): self.name = name d...原创 2018-06-30 17:04:45 · 430 阅读 · 0 评论 -
Python学习之路-----类属性、类方法、静态方法
类属性 在面向对象编程中我们在类定义中的__init__方法中给属性赋值,在访问属性的时候必须先定义对象,然后通过set或者get方法访问属性。在某些情况下我们会发现所有对象的某个或者某些属性的值都是一样的,例如,我们中国人的国籍都是中国,这对于每个中国人来说都是一样的。既然对于每个对象来说这个属性的值都是一样的,能不能用别的方法来存储这个属性值呢?答案是肯定的,就是类属性。 ...原创 2018-06-28 22:24:16 · 164 阅读 · 0 评论 -
Python学习之路-----私有属性、方法以及__del__
私有属性、方法 私有属性只能在类的定义里面使用,不能在类的外面使用。在属性名前加两个下划线就变成了私有属性。而在面向对象编程中的一个基本原则就是:访问类的属性应该使用类提供的接口,类提供的接口一般来说要有两个方法,一个是set()方法,用来设置类的属性,一个是get()方法,用来得到类的属性。如此一来就体现出了类的第一个基本特点:封装性。class Dog: def __i...原创 2018-06-24 10:29:54 · 313 阅读 · 0 评论 -
Python学习之路-----os模块的文件、文件夹常用方法,列表等高级数据类型存文件
os,Operating System,也就是操作系统的意思,这个模块封装了一些操作系统对文件、文件夹的操作。要想使用这个模块里面的方法需要想导入这个模块。一些基本例子判断文件是否存在:os.path.exist(文件路径)文件重命名:os.rename(原文件名字,新文件名字)删除文件:os.remove(文件路径)创建文件:使用with open()as即可创建文件夹:os.mkdir...原创 2018-06-18 21:24:32 · 559 阅读 · 0 评论 -
Python学习之路-----set高级变量、range生成整数序列、匿名函数
set 格式: 变量名 = { 元素1 , 元素2 ....} set,另一种高级变量数据类型,它存储的数据不仅是无序的而且是不重复的。 作用:用于对列表或者元组去重。set1 = {1,5,6,2,5,7,7,5,2,3,1}print(set1)print(len(set1))print(type(set1))结果:{1, 2, 3, 5, 6, 7}6&l...原创 2018-06-17 11:58:45 · 9002 阅读 · 0 评论 -
Python学习之路----参数混合使用、拆包案例、实参前加*
位置参数和可变参数混合使用如果想给位置参数赋值,位置参数一定要放在可变参数左侧;def func(a,*args): print(a) # 1 print(args) # (2, 3, 4)func(1,2,3,4)位置参数和默认参数混合使用如果想给位置参数赋值,位置参数一定要放在默认参数左侧;def func(a,b=10): print(a) # 1 ...原创 2018-06-11 23:03:57 · 521 阅读 · 0 评论 -
Python学习之路-----变量、变量的类型其输入输出
Python变量 Python中定义变量的方式是:变量名 = 变量值。例如:num1 = 1num2 = 2 需要注意的是,“=”的左右两侧各有一个空格,这样做的原因是增加代码的可读性和美观,同时这也是其他语言中存在的不成文的约定。其中“=”叫赋值运算符,作用是把等号右边的结果赋值给左边的值。当变量第一次出现并赋值的语句叫做变量的定义,之后变量的值可以随时改变,叫做赋值。变量的类型变量储...原创 2018-05-26 19:11:03 · 960 阅读 · 1 评论 -
Python学习之路-----正则表达式(2)
匹配分组| 匹配左右任意一个表达式 (ab) 将括号中字符作为一个分组 \num 引用分组num匹配到的字符串 #匹配163邮箱In [6]: result = re.match(r'\w{4,10}@163.com','test@163.com')In [7]: print(result)<re.Match object; span=(0, 12...原创 2019-11-24 14:38:42 · 113 阅读 · 0 评论 -
Python学习之路-----正则表达式(1)
正则表达式首先需要指出的是:正则表达式是独立于所有编程语言存在的一种规范。任何一种编程语言都免不了要处理各种规范以及不规范的字符,例如:一个简单的用户登陆界面就要求用户输入:用户名、密码等,然后后台程序除了需要对输入的字符串做一些合法性的判断,例如不能出现特殊字符等。正则表达式就帮助我们能快速的处理这些字符串,得到它们是否合法。python中内置了re模块,其中最常用的就是它的match(...原创 2019-11-23 22:13:46 · 123 阅读 · 0 评论 -
Python学习之路-----并发TCP服务器epoll
epoll的优点:没有最大并发连接的限制,能打开的FD(指的是文件描述符,通俗的理解就是套接字对应的数字编号)的上限远大于1024 效率提升,不是轮询的方式,不会随着FD数目的增加效率下降。只有活跃可用的FD才会调用callback函数;即epoll最大的优点就在于它只管你“活跃”的连接,而跟连接总数无关,因此在实际的网络环境中,epoll的效率就会远远高于select和poll。实例...原创 2019-11-16 15:34:16 · 353 阅读 · 0 评论 -
Python学习之路-----TCP服务器select版本
并发服务器主要解决了两点问题:保证监听套接字可以一直处理新的客户端的连接请求; 对于每一个已经建立连接的客户端都可以及时地响应并回复数据;因此,如果单进程的服务器能解决这两个问题,那么也可以做到并发地处理请求。select()方法可以监听已经到已经加入队列中套接字,如果其中某个套接字活跃了便及时返回这个套接字。#coding=utf-8import socketimport...原创 2019-11-16 14:00:21 · 307 阅读 · 0 评论 -
Python学习之路-----udp发送数据
套接字socket(套接字)是为了网络传输而设计的一种通信机制,通过实际所使用的传输层协议的不同分为udp和tcp套接字。实例网络应用程序分为客户端和服务端,二者的区别是服务端是用来处理客户端的请求的,因此一般来说服务端程序是要先运行起来。服务端代码:#coding=utf-8from socket import *import timeudpsocket = so...原创 2019-11-09 15:56:07 · 735 阅读 · 0 评论 -
Python学习之路-----同步、异步
同步、异步同步:多个线程之间按照既定的顺序合理地调度,即执行过程是有规律的。如:你 喊 你朋友吃饭 ,你朋友在忙 ,你就一直在那等,等你朋友忙完了 ,你们一起去。在下面的例子中创建了三个线程t1,t2,t3和三把锁m1,m2,m3。主进程先对m2和m3上锁,然后开启三个线程。在t1中对m1上锁,执行完后释放m2;在t2中由于m2一开始已经上锁,因此只能等t1中m2释放后再执行,同理t3必须...原创 2019-11-02 21:49:08 · 179 阅读 · 0 评论 -
Python学习之路-----多线程访问同一资源
全局变量和局部变量线程由进程创建,而且和进程共享一些资源。由下面的例子可以看出线程之间的全局变量是共享的,局部变量是非共享的。#coding=utf-8import threadingimport timea = 100def do_thread1(): print('in func do_thread1') global a a += 1 ...原创 2019-11-02 14:47:33 · 1519 阅读 · 0 评论 -
Python学习之路-----装饰器(5)
装饰器带参数装饰器本身也是函数,它以闭包的形式存在,且已经存在一个形参(即被修饰的函数)。那么如果装饰器本身在修饰时需要参数才如何写这个装饰器呢?直接看正确代码#coding=utf-8def f1_arg(arg): print('in f1_arg,arg:%s' % arg) def f1(func): print('in func,arg:%...原创 2019-10-13 20:51:05 · 65 阅读 · 0 评论 -
Python学习之路-----装饰器(4)
修饰带有返回值的函数 函数通常都是带有返回值的,当装饰器修饰带有返回值的函数时该怎么实现呢? #coding=utf-8def f1(func): print('in func') def f1_inner(): print('in f1_inner') value = func() #retur...原创 2019-10-13 12:17:10 · 82 阅读 · 0 评论 -
Python学习之路-----装饰器(3)
修饰带参数的参数 上两篇提到的装饰器的例子中,被修饰的函数没有参数,那么如果修饰带参数的装饰器又该如何书写呢?#coding=utf-8def f1(func): print('in f1') def f1_inner(): print('in f1_inner') func() return f1_inner@f1...原创 2019-10-13 09:22:55 · 1400 阅读 · 0 评论 -
Python学习之路-----装饰器(2)
多个装饰器的执行顺序 在上一篇的博客中已经说明了装饰器自身的执行时机是在python解释器第一次读到@符号的时候执行的,这个根据现象是可以推测出来的,再结合装饰器的本质以及闭包也能够完全地理解这个知识点。那么当多个装饰器修饰一个函数时,执行顺序又是怎样的呢?看下面的代码#coding=utf-8def f1(func): print('in f1') def...原创 2019-10-12 21:30:45 · 89 阅读 · 0 评论 -
Python学习之路-----装饰器(1)
装饰器的语法本质 装饰器本身是利用闭包实现的,因此只有真正学会了闭包中的知识点才能完全理解装饰器的语法。装饰器存在的意义 试想一个问题:在一个工程中有一个函数func(),现在有一个需求是func()现在本身不能满足的,因此需要重新实现func()的功能。这是正常的思路,也是可行的,但是却违背了开发中的“开放、封闭”原则。 封闭:函数本身的功能不能随便更...原创 2019-10-09 22:09:14 · 77 阅读 · 0 评论 -
Python学习之路----深拷贝与浅拷贝
深浅简介浅拷贝指的是变量之间使用等号赋值的操作,这样执行操作后两个变量名共同指向同一块内存,即引用;深拷贝指的两个变量在指向的是内存中两块不同的内存。完成深拷贝需要用到copy模块。请看以下实例:import copylist1 = [1,True,2.2,'hello']list2 = list1list3 = copy.deepcopy(list1)print('lis...原创 2019-10-04 11:04:17 · 92 阅读 · 0 评论 -
Python学习之路-----is 与 == 、异常处理
is 与 ==== 看代码,list1 = [1,2,3]list2 = [1,2,3]if list1 == list2: print("list1和list2相等")else: print("list1和list2不相等")结果:list1和list2相等list1 = [1,2,3]list2 = list1if list1 == list2...原创 2018-07-01 10:25:29 · 213 阅读 · 0 评论 -
Python学习之路-----小数字缓存、字符串缓存
缓存介绍 为了增加程序的运行效率,Python3的解释器中实现了小数字和字符串缓存的机制,小数字的缓冲范围是[-5 ~ 256],字符串的缓存位数默认是20位。在Python程序中每次初始化一个新的变量就会在内存中开辟一块空间来存储这个变量,当变量不用的时候再回收这块内存。当大量出现这种操作的时候CPU就会发热,工作效率下降。为了减轻CPU的这种负担,Python3的解释器便实现了...原创 2018-06-15 22:14:15 · 2578 阅读 · 0 评论 -
Python学习之路-----变量的引用
基本数据类型的引用 在Python中定义一个数据便在内存中开辟一片空间来存储这个变量的值,这块已经被分配的内存空间便会有一个内存地址。访问这块内存需要用到变量名,变量名实际存储的是变量的地址在内存中的地址,但是使用print()函数得到的确实这块内存中实际的地址。这个就当成规定就好,没必要纠结。 获得变量在内存中的地址,可以使用id()函数。常规使用 变量...原创 2018-06-14 08:22:20 · 13377 阅读 · 6 评论 -
Python学习之路-----列表的嵌套
列表和if条件语句while循环一样可以嵌套使用。嵌套的列表仍然符合列表的基本特性,之前学的方法依旧可以使用。下面是一个例题:将1-8这几个数字随机分成三组。结果:list1: [7]list2: [1, 2, 4, 8]list3: [3, 5, 6]list: [[7], [1, 2, 4, 8], [3, 5, 6]]7 1 2 4 8 3 5 6 import randomli...原创 2018-06-03 16:47:05 · 466 阅读 · 0 评论 -
Python学习之路-----while嵌套打印九九乘法表
while循环和if条件语句一样都可以嵌套使用,但是while循环的嵌套相对来讲难度更大。下面说一下while嵌套循环打印九九乘法表的例子。如上图所示,九九乘法表有行有列,而且每一行、每一列的两个乘数之间是有一定规律的。合理地组织while循环和输出语句就能达到以上效果。代码如下:row = 1 # 行数,九九乘法表有九行,因此row从1开始到9结束while row <= ...原创 2018-05-31 20:48:48 · 5134 阅读 · 0 评论 -
Python学习之路-----if条件语句与逻辑运算
if条件语句if条件判断是所有编程语言中都有的语法,下面演示一个Python中的例子number1 = 10if number1 > 1: # 如果if条件语句成立,返回True,执if后面的代码块 print("number1 > 1") # 行首有一个Tab缩进,同一个缩进是同一个代码块else: ...原创 2018-05-27 16:37:44 · 25519 阅读 · 1 评论 -
Python学习之路-----算术运算符
基本运算符:+ - * / // % **算术运算符就跟数学上的运算一样,直接看代码吧。number1 = 9number2 = 4print(number1 + number2) # 结果是13print(number1 - number2) # 结果是5print(number1 * number2) # 结果是36print(number1 / number2) ...原创 2018-05-27 15:40:40 · 150 阅读 · 0 评论 -
Python学习之路-----tcp实例
TCP和UDP都是传输层的协议,二者在实现上有着本质的区别。具体请看这篇文章:https://blog.csdn.net/zhang6223284/article/details/81414149TCP服务器实例:#coding=utf-8from socket import *import timeserSocket = socket(AF_INET,SOCK_ST...原创 2019-11-10 11:34:43 · 232 阅读 · 0 评论 -
Python学习之路-----网络知识
网络的目的网络是为了把处在不同位置的计算机联系起来,使得彼此之间能够相互通信。网络协议试想不同国家的人以自己的母语交流那是根本不能达到彼此之间获得信息的目的的,因此如果想让处在不同位置的两台或者多台计算机能相互通信,就需要事先约定好通信的方法,即:协议。早期的计算机网络,都是由各厂商自己规定一套协议,IBM、Apple和Microsoft都有各自的网络协议,互不兼容。为了把全世界的所有...原创 2019-11-09 14:42:15 · 173 阅读 · 0 评论 -
Python学习之路-----线程
线程线程和进程一样,也是为了实现多任务而设计出来的。举个例子:打开微信,可以和多个人同时聊天,这就可以用多线程实现。既然进程和线程都可以实现多任务,为什么还要设计出这两种呢?(在这埋个伏笔)threading模块实现线程方法1python的threading模块提供了实现的线程的方法,在使用方法上和mutiprocessing很相似。#coding=utf-8import...原创 2019-11-02 10:07:26 · 79 阅读 · 0 评论 -
Python学习之路-----Queue
进程间通信多进程实现了并发行为但却带来一个问题,进程间通信!在实际的生活中这种例子很常见,如微信聊天视频。如果进程间不能通信那么每个应用程序就失去了存在的意义。在linux中进程间通信的方式有:管道(有名管道、无名管道)、共享内存、消息队列、socket等。python的进程间通信最常用的是Queue,即队列。队列的特性是先进先出,与之相反的是先进后出,即栈。Queue的基本使用# ...原创 2019-10-21 22:37:32 · 284 阅读 · 0 评论 -
Python学习之路-----多进程
程序与进程程序:可以被操作系统加载到内存中执行的一段代码;进程:可执行程序被加载到内存中执行的整个过程;由上面的区别可以看出程序相对与进程来讲是一个静态的概念,它是没有生命的,仅仅占用硬盘存储空间而已。进程相当于程序来讲是有生命的,在被执行的整个期间会占用内存的空间,还可能使用各种外部设备(键盘、鼠标等),整个运行期间还要受操作系统的调度。多任务(进程)和CPU操作系统都是多任...原创 2019-10-20 10:14:15 · 162 阅读 · 0 评论 -
Python学习之路-----动态特性
静态语言和动态语言我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。动态语言:指在程序运行期间才做类型检查的,如Python 和 Ruby。静态类型:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++ 是静态类型语言的典型代表;动态语言的优点:在编写代码时数量更少更简洁,把更多的精力放到业务实现逻辑上...原创 2019-10-15 08:03:24 · 154 阅读 · 0 评论 -
Python学习之路-----闭包
背景闭包是python特有的语法功能,先看以下小例子。定义了函数func1(),并且打印了这个函数的名称以及类型,然后正常调用了这个函数,因此在出现了打印的一行结果。然后使用变量x指向了func1,即x现在是func1的一个引用(这一点类似与变量的赋值操作),因此打印x以及type(x)会得到先前一样的结果,并且可以像调用func1一样调用x这个函数。def func1(): ...原创 2019-10-08 22:19:23 · 97 阅读 · 0 评论