python3进阶
文章平均质量分 81
CurryCoder
个人微信公众号:CurryCoder的程序人生
技术交流QQ群:1027579432
所有代码在此https://github.com/cdlwhm1217096231,欢迎各位小伙伴star、follow、fork
个人主页:https://cdlwhm1217096231.github.io/
展开
-
Python实现按序合并多个pdf文件
技术交流QQ群:1027579432,欢迎你的加入!欢迎关注我的微信公众号:CurryCoder的程序人生1.整体实现步骤在日常办公中,我们可能会有一个需求,需要将多个pdf文件合并成一个文件。例如:需要将每个章节的pdf文件学习资料合并成一个pdf文件,便于我们进行学习资料的归档与整理。如何才能合并多个pdf文件呢?我查了一下网上现有的资料(详见参考资料1),发现python中有一个第三方库PyPDF2用起来真香。但是,网上现有的程序仅仅实现多个pdf文件,并未实现按序合并。下面谈谈我的整体实现步原创 2020-08-30 20:31:33 · 1016 阅读 · 0 评论 -
Python中的反射机制(reflect)
1.区别标识名与看起来相同的字符串标识名和看起来相同的字符串,两者在字面上看起来一样,却是两种东西,例如下面的例子中func函数和字符串"func"def func(): print("func是这个函数的名字")s = "func"print("%s是一个字符串" % s)前者是函数func的函数名,后者只是一个叫func的字符串,两种是不同的事物。我们可以使用func(...原创 2019-11-04 22:38:43 · 511 阅读 · 0 评论 -
Python中的元编程(Meta-Programming)
元编程:是编写出可以操作的代码的行为,即用代码来操作另一个代码。Python中的元编程:一种构建函数和类的行为,这些函数和类可以通过修改、包装现有代码或生成代码来进行操纵。Python中元学习的实现方法:装饰器元类1.装饰器装饰器是一种不用修改原始代码结构来为现有函数增加新的功能的一种方法。请看下面的几个函数实例:def add(x, y): return x + y...原创 2019-11-04 20:45:53 · 743 阅读 · 2 评论 -
Python中内建模块collections常见用法总结
1.CounterCounter是字典对象的一个子类。Counter()函数是collections模块中的函数,它接收一个可迭代对象,例如list、tuple等,返回一个Counter字典。返回Counter字典的键是Counter()函数接收的可迭代对象中唯一的元素,Counter字典的值是Counter()函数接收的可迭代对象中唯一的元素的出现次数。from collections im...原创 2019-11-04 11:05:08 · 305 阅读 · 0 评论 -
python3中的推导式、生成器、迭代器
一.推导式1.列表推导式:一种快速生成列表的方式,其形式是用方括号括起来的一段语句。 lis = [x * x for x in range(1, 100)] # 增加条件语句 [x * x for x in range(1, 11) if x % 2 == 0] # 多重循环 [a + b for a in '123' for b in "xyz"] # 更多用法 dic =...原创 2019-06-10 16:04:56 · 306 阅读 · 0 评论 -
Python3中的装饰器
一.装饰器1.定义:从字面上理解,就是装饰对象的器件。可以在不修改原有代码的情况下,为被装饰的对象增加新的功能或者附加限制条件或者帮助输出。装饰器有很多种,有函数的装饰器,也有类的装饰器。装饰器在很多语言中的名字也不尽相同,它体现的是设计模式中的装饰模式,强调的是开放封闭原则。装饰器的语法是将@装饰器名,放在被装饰对象上面。 @dec def func(): # 被装饰对象 pas...转载 2019-06-10 15:35:27 · 1518 阅读 · 0 评论 -
Python中的特殊成员和魔法方法
1.简介Python中有大量类似__doc__这种以双下划线开头和结尾的特殊成员及“魔法方法”,它们有着非常重要的地位和作用,也是Python语言独具特色的语法之一! __init__ : 构造函数,在生成对象时调用 __del__ : 析构函数,释放对象时使用 __repr__ : 打印,转换 __setitem__ : 按照索引赋值 __geti...转载 2019-06-13 17:38:34 · 315 阅读 · 0 评论 -
Python中的@property装饰器
1.介绍python内置的@property装饰器可以把类的方法伪装成属性调用的方式。即将原来Foo.func()的调用方法,变成Foo.func的方式。 class People: def __init__(self, name, age): self.name = name self.age = age @property def age(self):...转载 2019-06-13 17:06:55 · 543 阅读 · 0 评论 -
Python3中的成员保护和访问限制
1.成员保护在类的内部,有各种变量和方法。这些数据成员,可以在类的外部通过实例或者类名进行调用,例如: class People: title = "人类" def __init__(self, name, age): self.name = name self.age = age def print_age(sel...转载 2019-06-12 16:30:15 · 2334 阅读 · 0 评论 -
Python3中的内置函数总结
1.内置函数的查找内置函数都定义在一个叫builtins模块中,此模块默认在python环境启动的时候就自动导入,可以直接使用这些函数,不用import 模块名。globals():列出当前环境下所有的全局变量查看builtins模块中定义的函数:abs():绝对值函数。注意:内置函数是可以被赋值给其他变量的,同样也可以将其他对象赋值给内置函数,这时就完全变了。所以,内置函数不是Py...转载 2019-06-11 20:30:41 · 775 阅读 · 0 评论 -
Python3中的字符串
1.字符串介绍字符串是不可变的序列数据类型,不能直接修改字符串本身,和数字类型一样!Python3全面支持Unicode编码,所有的字符串都是Unicode字符串,所以传统Python2存在的编码问题不再困扰我们,可以放心大胆的使用中文。2.字符串的运算3.字符串的内置方法4.字符编码字符编码:计算机只能处理数字01,如果要处理文本,就必须先把文本转换为数字01,这种转...转载 2019-08-18 20:18:20 · 268 阅读 · 0 评论 -
Python中的函数参数类型
1.参数命名规则经验:绝大多数函数接收一定数量的参数,然后根据实际调用时提供的参数的值的不同,输出不同的结果。前面我们说过,将函数内部的参数名字,定义得和外部变量的名字一样是一种不好的习惯,它容易混淆思维,甚至发生错误。2.位置参数(必传参数/位置参数)必须在调用函数时明确提供的参数!位置参数必须按先后顺序,一一对应,个数不多不少的传递!x, y, z = 1, 2, 3def add...转载 2019-08-18 21:24:24 · 824 阅读 · 0 评论 -
Python中的变量作用域
1.变量的作用域:即变量的有效范围。变量并不是在哪个位置都可以访问的,访问权限取决于这个变量是在哪里赋值的,也就是在哪个作用域内的。2.在Python中,没有块级作用域,也就是说类似if语句块、for语句块、with上下文管理器等等是不存在作用域概念的,它们等同于普通的语句。>>> if True: # if语句块没有作用域 x = 1 &...转载 2019-08-19 16:58:36 · 662 阅读 · 0 评论 -
Python3 网络编程(转载)
1.Socket编程介绍socket是基于C/S架构的,也就是说进行socket网络编程时,通常需要两个文件,一个是服务端,一个客户端首先导入socket模块:import socketpython中socket通信逻辑如下图所示:python中,使用socket.socket()方法来创建套接字,sk = socket.socket([family[, type[, proto]]]...转载 2019-08-16 22:49:38 · 255 阅读 · 0 评论 -
Python3多线程threading介绍(转载)
多线程介绍在python3中,通过该threading模块提供线程的功能。原来的thread模块已经废弃。但是,threading模块中有个Thread类是模块中最主要的线程类,一定要记住!!!threading模块提供了一些实用的方法或属性,例如:theading模块包含以下的类:Thread: 基本线程类Lock:互斥锁RLock:可重入锁,使单一进程再次获得已持有的锁(递归...转载 2019-08-18 15:05:38 · 19984 阅读 · 1 评论 -
Python中的生产者与消费者模式(转载)
利用多线程和队列可以实现生产者消费者模式。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。1.什么是生产者和消费者?在线程世界里,生产者就是生产数据(或者说发布任务)的线程,消费者就是消费数据(或者说处理任务)的线程。在任务执行过程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力...转载 2019-08-18 15:25:04 · 301 阅读 · 0 评论 -
Python中的浅拷贝与深拷贝
1.浅拷贝分析浅拷贝时,需要分成两种情况来讨论:情况1:如果最外层的数据类型是可变对象(列表、字典、集合等),使用浅拷贝时会开辟新的地址去存放。情况2:如果最外层的数据类型是不可变对象(字符串、数字、元组等),使用浅拷贝时不会开辟新的地址空间。情况1的实例如下:import copya = [1, 2]b = [3, 4]c = [a, b] # 注意这里的c就是一个可...原创 2019-09-11 16:47:34 · 262 阅读 · 0 评论 -
Python3面向对象编程的三大特性 封装、继承、多态
1.封装封装:将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,正是由于封装机制,程序在使用某一对象时不需要关心该对象的数据结构细节及实现操作的方法。使用封装能隐藏对象实现细节,使代码更易维护,同时因为不能直接调用、修改对象内部的私有信息,在一定程度上保证了系统安全性。类通过将函数和变量封装在内部,实现...转载 2019-06-12 16:10:11 · 537 阅读 · 0 评论 -
Python3中的类和实例
1.类和实例类是抽象的模板,实例是根据类创建出来的一个个具体的"对象"。例如:动物是一大类,猫、狗、鱼等都是特定的对象,即实例。python3中使用class关键字来定义类,基本结构如下:class 类名(父类/基类/超类列表): pass类名一般使用大驼峰来进行命名,尽量见名知意。python采用多继承的机制,一个类可以同时继承多个父类(基类、超类),继承的父类有先后顺序,写在类...转载 2019-06-12 15:33:23 · 871 阅读 · 0 评论 -
python3网络编程实战
客户端程序:#!/usr/bin/env python3# -*- coding: utf-8 -*-# Version: python 3.6.3# Tools: Pycharm 2017.3.3__date__ = '2018/7/24 11:06'__author__ = 'cdl'import socketimport timeclass ChatClient:...原创 2018-07-24 16:42:51 · 1152 阅读 · 0 评论 -
python3中的多线程
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Date : 2018-07-19 21:50:16# @Author : cdl ([email protected])# @Link : https://github.com/cdlwhm1217096231/python3_spider# @Version : $Id$''...原创 2018-07-20 22:30:10 · 1061 阅读 · 0 评论 -
python3多线程----锁机制
#!/usr/bin/env python3# -*- coding: utf-8 -*-# Version: python 3.6.3# Tools: Pycharm 2017.3.3__date__ = '2018/7/20 9:49'__author__ = 'cdl'import timeimport threading"""线程中的锁机制""""""有两个线程...原创 2018-07-20 22:31:16 · 6210 阅读 · 0 评论 -
python3语法糖------装饰器
#!/usr/bin/env python3# -*- coding: utf-8 -*-"""装饰器"""###### 第一波 ######def foo(): print('foo')print('函数对象,表示foo这个函数', foo)foo() # 调用foo函数###### 第二波 ######def foo(): print('foo')...原创 2018-07-20 22:32:23 · 615 阅读 · 0 评论 -
python3可迭代对象、迭代器、生成器、协程yield入门
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Date : 2019-01-24 16:13:07# @Author : cdl ([email protected])# @Link : https://github.com/cdlwhm1217096231/python3_spider# @Version : $Id$#...原创 2019-03-09 08:50:19 · 284 阅读 · 0 评论 -
python3线程中的锁机制
1.锁的形象解释有一个奇葩的房东,他家里有两个房间想要出租。这个房东很抠门,家里有两个房间,但却只有一把锁,不想另外花钱是去买另一把锁,也不让租客自己花钱加锁。这样租客只有先租到的那个人才能分配到锁。X先生,率先租到了房子,并且拿到了锁。而后来者Y先生,由于锁已经已经被X取走了,自己拿不到锁,也不能自己加锁,Y就不愿意了,也就不租了。换作其他人也一样,没有人会租第二个房间,直到X先生退租,把锁还...原创 2019-03-09 08:52:30 · 761 阅读 · 0 评论 -
python3创建多线程的几种方法
python3创建多线程主要有下面两种方法:函数、类1.函数创建多线程python3中,提供了一个内置模块threading.Thread,可以很方便的创建多线程,threading.Thread()一般接收2个参数:线程函数名:要放置线程让其后台执行的函数,有用户自己定义,主要不要加()线程函数的参数: 线程函数名所需的参数,以tuple形式传入,如果不需要参数,可以不指定。#!/...原创 2019-03-10 14:31:24 · 1892 阅读 · 0 评论 -
python3并发编程基础
1.基本概念1.串行与并行a.串行:比喻是一个人在同一时间段只能干一件事,如只能吃完饭后再玩手机b.并行:比喻是一个人在同一时间段可以干很多事,如一边吃饭一边玩手机2.在python中,多线程与协程虽然严格上来说是串行,但是却比一般串行程序执行效率高很多。一般的串行程序,在程序阻塞时,只能干等着,不能做其他事情。比如,开始播放电视剧前,必须看完广告才能观看电视剧,这个等待时间我们却...原创 2019-03-10 14:31:58 · 286 阅读 · 0 评论 -
python3中的单例模式Singleton
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Date : 2019-01-21 09:09:09# @Author : cdl ([email protected])# @Link : https://github.com/cdlwhm1217096231/python3_spider# @Version : $Id$...原创 2019-03-10 14:33:00 · 848 阅读 · 0 评论 -
python3中的新式类与经典类对比
1.经典类是直接声明的。使用dir()方法也可以看出新式类中定义很多新的属性和方法,而经典类就3个class A: def __init__(self): passdir(A)['__doc__', '__init__', '__module__']2.新式类是在创建的时候继承内置object对象(或者是从内置类型,如list,dict等)class B(obj...原创 2019-03-10 14:34:04 · 831 阅读 · 0 评论 -
python中的异常分类
异常的分类AssertError 断言语句(assert)失败AttributeError 尝试访问未知的对象属性EOFError 用户输入文件末尾标志EOF(Ctrl+d)FloatingPointError 浮点计算错误GeneratorExit generator.close()方法被调用的时候ImportError 导入模块失败的时候IndexError 索引超出序列的范围...原创 2019-03-13 10:56:21 · 629 阅读 · 0 评论 -
Python3中的json对象与python对象转化
1.直接将Python对象转成json对象,使用方法dumps()import jsond = {"姓名": "curry", "age": 30, "hobby": "basketball"}d_json = json.dumps(d, ensure_ascii=False)print("json对象d_json: ", d_json)2.将Python对象转成json对象后...原创 2019-04-13 09:18:35 · 2763 阅读 · 0 评论 -
Python3中一些有用的函数
Python3中一些有用的函数1.根据两个列表创建一个字典 prod_id = [1, 2, 3] prod_name = ["foo", "bar", "baz"] prod_dict = dict(zip(prod_id, prod_name)) print("prod_dict:", prod_dict)2.从一个列表中删除重复值,并保持原始列表中...原创 2019-05-06 14:33:09 · 286 阅读 · 0 评论 -
python3网络编程
#!/usr/bin/env python3# -*- coding: utf-8 -*-# Version: python 3.6.3# Tools: Pycharm 2017.3.3__date__ = '2018/7/24 10:48'__author__ = 'cdl'# 使用socket网络编程"""socket表示一个网络连接,通过这个连接,使得主机之间或者一台计算机...原创 2018-07-24 16:39:12 · 334 阅读 · 0 评论