python实例

Python集合详解

牧云@^-^@ 提交于 2020-02-26 11:42:58
集合介绍: 集合(set)是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。 创建格式: parame = {value01,value02,...} 或者 set(value) 实例(Python 3.0+) >>>basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'} >>> print(basket) # 这里演示的是去重功能 {'orange', 'banana', 'pear', 'apple'} >>> 'orange' in basket # 快速判断元素是否在集合内 True >>> 'crabgrass' in basket False >>> # 下面展示两个集合间的运算. ... >>> a = set('abracadabra') >>> b = set('alacazam') >>> a {'a', 'r', 'b', 'c', 'd'} >>> a - b # 求差集(只有a中拥有的而b集合没有的元素) {'r', 'd', 'b'} >>> a | b # 并集(集合a或b中包含的所有元素) {'a', 'c', 'r', 'd', 'b', 'm',

Python基础之变量基本用法与进阶详解

空扰寡人 提交于 2020-02-26 08:30:24
本文实例讲述了Python基础之变量基本用法与进阶。分享给大家供大家参考,具体如下: 目标 变量的引用 可变和不可变类型 局部变量和全局变量 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的 1.1 引用的概念 在 Python 中 变量 和 数据 是分开存储的 数据 保存在内存中的一个位置 变量 中保存着数据在内存中的地址 变量 中 记录数据的地址,就叫做 引用 使用 id() 函数可以查看变量中保存数据所在的 内存地址 注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用 变量 不再 对之前的数据引用 变量 改为 对新赋值的数据引用 1.2 变量引用 的示例 在 Python 中,变量的名字类似于 便签纸 贴在 数据 上 定义一个整数变量 a,并且赋值为 1 将变量 a 赋值为 2 定义一个整数变量 b,并且将变量 a 的值赋值给 b 变量 b 是第 2 个贴在数字 2 上的标签 1.3 函数的参数和返回值的传递 在 Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的 def test(num): print("-" * 50) print("%d 在函数内的内存地址是 %x" % (num, id(num))) result = 100 print("返回值

python图像处理:pytesseract和PIL

人走茶凉 提交于 2020-02-26 07:22:50
大概介绍下相关模块的概念 : Python-tesseract 是光学字符识别Tesseract OCR引擎的Python封装类。能够读取任何常规的图片文件(JPG, GIF ,PNG , TIFF等)并解码成可读的语言。在OCR处理期间不会创建任何临文件 PIL (Python Imaging Library)是 Python 中最常用的图像处理库,目前版本为 1.1.7,我们可以 在这里 下载学习和查找资料。 Image 类是 PIL 库中一个非常重要的类,通过这个类来创建实例可以有直接载入图像文件,读取处理过的图像和通过抓取的方法得到的图像这三种方法。 python对图像的处理比较常见的是用pytesseract识别验证码,要安装pytesseract库,必须先安装其依赖的PIL及tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google的ocr识别引擎。 下载链接:http://www.waitalone.cn/python-php-ocr.html 该链接文档描述了如何配置相关环境,以及识别验证码的python代码,总结起来就三步:安装PIL.exe;安装 tesseract-ocr-setup .exe;安装pip install pytesseract 1、识别图片简单的示例 1 import Image 2 import

subprocess模块

纵饮孤独 提交于 2020-02-26 04:54:58
原始地址 subprocess是Python 2.4中新增的一个模块,它允许你生成新的进程,连接到它们的 input/output/error 管道,并获取它们的返回(状态)码。这个模块的目的在于替换几个旧的模块和方法,如: os.system os.spawn* subprocess模块中的常用函数 函数 描述 subprocess.run() Python 3.5中新增的函数。执行指定的命令,等待命令执行完成后返回一个包含执行结果的CompletedProcess类的实例。 subprocess.call() 执行指定的命令,返回命令执行状态,其功能类似于os.system(cmd)。 subprocess.check_call() Python 2.5中新增的函数。 执行指定的命令,如果执行成功则返回状态码,否则抛出异常。其功能等价于subprocess.run(..., check=True)。 subprocess.check_output() Python 2.7中新增的的函数。执行指定的命令,如果执行状态码为0则返回命令执行结果,否则抛出异常。 subprocess.getoutput(cmd) 接收字符串格式的命令,执行命令并返回执行结果,其功能类似于os.popen(cmd).read()和commands.getoutput(cmd)。 subprocess

Python CGI编程

别等时光非礼了梦想. 提交于 2020-02-26 04:47:13
CGI(Common Gateway Interface)通用网关接口,它是一段程序,运行在服务器上。如:HTTP服务器,提供同客户端HTML页面的接口。 CGI程序可以是python脚本,PERL脚本,shell脚本,c或者c++程序等。 web服务器支持及配置 apache支持CGI配置:一般CGI目录为:/var/www/cgi-bin/ CGI文件的扩展名为.cgi,python也可以使用.py扩展名。 默认情况下,Linux操作系统配置运行的cgi-bin目录中为/var/www.如果要自定义,可以在http.conf配置文件中修改。 在/var/www/cgi-bin目录下创建第一个cgi程序,文件名为hello.py 在浏览器中访问显示结果如下: 注:用print输出一个空行用于告诉服务器结束头部信息。 一、HTTP头部 HTTP头部格式如下: HTTP 字段名:字段内容 例如:Content-type:text/html (告诉浏览器文件的内容类型) CGI程序中HTTP头部经常使用的信息 二、GET和POST方法 浏览器客户端通过这两种方法向服务器传递信息。 1. 使用GET方法传输数据 GET方法发送编码后的用户信息到服务端,数据信息包含在请求页面的URL上,以“?”分割。 如: http : //192.168.112.128/cgi-bin/hello.py

python 简单元编程

夙愿已清 提交于 2020-02-26 02:27:57
软件开发领域中最经典的口头禅就是“don’t repeat yourself”。 也就是说,任何时候当你的程序中存在高度重复(或者是通过剪切复制)的代码时,都应该想想是否有更好的解决方案。 在Python当中,通常都可以通过元编程来解决这类问题。 简而言之,元编程就是关于创建操作源代码(比如修改、生成或包装原来的代码)的函数和类。 主要技术是使用装饰器、类装饰器和元类。   一、你想在函数上添加一个包装器,增加额外的操作处理(比如日志、计时等)。   之前思路:利用装饰器。   装饰器最基本的原理如下:   @timethis def countdown(n): pass   效果等同如下: def countdown(n): pass countdown = timethis(countdown)   所以我们在inner函数中实现我们想要的业务逻辑即可。 def wraper(func): def inner(*args,**kwargs): # 你想实现的额外功能 res = func() return res return inner 但是如果我们打印 func.__name__,就会出现inner,这个函数的重要的元信息比如名字、文档字符串、注解和参数签名都丢失了。   二、如何解决上述问题呢   注意:任何时候你定义装饰器的时候,都应该使用 functools 库中的

Python与Redis交互

淺唱寂寞╮ 提交于 2020-02-25 16:01:22
缓存系统 mongodb 直接持久化,宕机数据不丢失 redis 半持久化,手动控制,NoSQL数据库 memcache 不能持久化,存储在内存中,轻量级缓存 radis 单线程应用,通过异步实现多访存 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多, 包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。 这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。 在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。 区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis的安装 1 wget http://download.redis.io/releases/redis-3.0.6.tar.gz 2 tar xzf redis-3.0.6.tar.gz 3 cd redis-3.0.6 4 make 启动Radis 1 src/redis-server 客户端操作 1 src/redis-cli 2 redis> set name cq

python静态方法、类方法和实例方法

天大地大妈咪最大 提交于 2020-02-25 07:26:01
1. 静态方法 如果我们的类属性是一个私有变量,我们就需要定义一个函数使得在类外可以访问它。我们希望既可以用类名来访问,也可以用实例名来访问,那么该如何做呢? 下面这样是不行的: class Robot: # __开头表示私有变量 __counter = 0 def __init__(self): type(self).__counter += 1 def RobotInstances(self): return Robot.__counter if __name__ == "__main__": x = Robot() print("通过实例访问: ", x.RobotInstances()) # 下面会报错 print("通过类访问: ", Robot.RobotInstances()) 改代码无法通过类名访问,因为这种定义方式必须要定义一个实例,self指向这个实例。 如果我们在定义RobotInstances这个函数的时候,不写self参数,那么可以通过类访问,不能通过实例访问,静态方法就是为了解决这个问题。只需要在定义的函数前添加@staticmethod,这是装饰器语法。 class Robot: # __开头表示私有变量 __counter = 0 def __init__(self): type(self).__counter += 1 @staticmethod

Python for 循环语句实例

佐手、 提交于 2020-02-24 23:30:16
目录 for 循环语句(求列表中最大值) isinstance函数用法 实例应用: for 循环语句(求列表中最大值) ''' 此代码 for循环的使用案例 获取列表中多种元素中的最大值 ''' list1=[123,456,11111,55102,451,'你好','hello'] #list列表 max01=list1[0] print(max01) #a列表中的最大值 for num in list1: #for循环依次获取列表中每一个元素 print(num) if isinstance(num, int): #if判断是否为数值类型 if max01<num: max01=num #赋值max01为最大值 print('最大值为:',max01) isinstance函数用法 isinstance是Python中的一个内建函数 isinstance(object, classinfo) 举例: >>> isinstance(1, int)  判断是否是int型 True >>> isinstance(1.0, float) 判断是否是float型 True >>> isinstance(s,string) 判断是否是字符串型 实例应用: 更新中...... 来源: CSDN 作者: Thinklov 链接: https://blog.csdn.net/u010244992

多进程爬虫python——实例爬取酷狗歌单

天大地大妈咪最大 提交于 2020-02-24 14:22:33
多线程和多进程概述:当计算机运行程序时,就会创建包含代码和状态的进程。这些进程会通过计算机的一个或多个CPU执行。不过,同一时刻一个CPU只能执行一个进程,然后在不同进程间快速切换,这样就给人以多个程序同时运行的感觉。同理,在一个进程中,程序的执行也是在不同线程间进行切换的,每个线程执行程序的不同部分。例如,一个工厂(网络爬虫)有多个车间(进程)负责不同的功能,一个车间又有多个车间工人(线程)协同合作,效率大大提升。 from multiprocessing import Pool pool=Pool(processes= num)#创建进程池,num为进程个数 pool.map(func,iterable)#func为爬虫函数,iterable为迭代参数,爬虫中,可为多个url列表进行迭代 实例:爬取酷狗歌单(做测试只返回不储存) import requests #用于请求网页获取网页数据 from bs4 import BeautifulSoup #解析网页数据 import time #time库中的sleep()方法可以让程序暂停 import csv from multiprocessing import Pool ''' 爬虫测试_多进程 酷狗top500数据 写入csv文件 ''' ''' fp = open('D://kugou.csv','wt',newline=