python函数
文章平均质量分 72
胖虎是只mao
这个作者很懒,什么都没留下…
展开
-
python 代码编写优化
1. 列表推导式只有if…版[item for item in data if condition]# 剔除data中的奇数data = [1, 2, 3, 4, 5, 6, 7, 8, 9]test = [item for item in data if item % 2 == 0]print(test)# 结果[2, 4, 6, 8]此处if主要起条件判断作用,data数据中只有满足if条件的才会被留下,最后统一生成为一个数据列表if…else… 版模板:[exp1原创 2022-03-01 01:23:49 · 252 阅读 · 0 评论 -
python百题大冲关(1-6)
参考答案仓库:https://github.com/Shallow22/python-1001. 实现一个算法来识别一个字符串的字符是否是唯一的。挑战内容本次挑战中,你需要在 unique_chars.py 文件中补充函数 has_unique_chars 的空缺部分。has_unique_chars 函数接受一个参数,string 用于指定传入的字符串;has_unique_chars 函数输出一个布尔值,即 True 或者 False。你需要补充 has_unique_chars 函数,使其原创 2022-03-01 01:23:33 · 417 阅读 · 0 评论 -
python 工具函数代码(二)
1. 实现一个判断redis 服务器时候存在的装饰器from functools import wrapsfrom flask import gfrom rmon.common.rest import RestExceptionclass ObjectMustBeExist: """该装饰器用于对某一个 Server 实例进行删改查操作,确保操作对象必须存在 """ def __init__(self, object_class): """原创 2022-03-01 01:23:05 · 334 阅读 · 0 评论 -
python 工具函数代码(一)
1. utc 标准时间转换成本地时间def utc2local(utc_st): '''将utc 标准时间转换成本地时间''' now_stamp = datetime.now().timestamp() local_time = datetime.fromtimestamp(now_stamp) utc_time = datetime.utcfromtimestamp(now_stamp) offset = local_time - utc_time pr原创 2021-12-28 16:18:17 · 8887 阅读 · 0 评论 -
python- flask current_app详解,与 current_app._get_current_object()的区别以及异步发送邮件实例
核心知识AppContext手动、自动入栈LocalStack是线程隔离的栈结构current_app是线程、协程隔离对象LocalProxy是获取当前线程隔离的代理对象一、flask中经典错误 working outside application context错误:working outside application contex原因:在没有获取到应用上下文的情况下,进行了上下文操作。代码:from flask import Flask, current_appapp =原创 2021-12-22 16:05:57 · 3968 阅读 · 1 评论 -
python 函数方法大赏
isinstance(). 判断类型isoformat().它使用日期类对象,并以ISO 8601格式YYYY-MM-DD返回表示日期的字符串。 日期和时间表示的国际标准是ISO8601。该标准旨在提供日期和时间表示的格式>>> from datetime import date>>> p = date.today()>>> k = p.isoformat()>>> k'2021-12-09'>>>.原创 2021-12-15 16:59:41 · 930 阅读 · 0 评论 -
python函数的奇淫技巧——chain()函数
tertools.chain() 方法可以用来简化这个任务。 它接受一个可迭代对象列表作为输入,并返回一个迭代器,有效的屏蔽掉在多个容器中迭代细节。对多个对象执行相同的操作,且这几个对象在不同的容器中,这时候就用到了itertools.chain的函数,这个函数就用来干这件事的from itertools import chaina = ['x','r','v','b']b = [1,2,3,4,5]# b = (1,2,3,4,5).# 元祖也可,可迭代对象都可for i in chain原创 2021-11-25 15:59:37 · 2349 阅读 · 0 评论 -
哈希表和字典的异同
一、哈希表三、总结哈希表和字典都是可以存储数据的一个容器,都是以键值对的方式来存储数据,一个键对应一个值,通过键和值来检索数据时是十分有效迅速的,举个简单的例子就是我们的手机的电话薄里面都是一个人对应一个电话号码,检索的时候只有找到键,也就是找到人名,就可以找到电话号码了。 字典的存储结构也是通过哈希表来实现的,所以两者存入数据的方式是一样的,但是两者在执行效率上还是有差别的。存入数据不限制类型和数量,前提是导入命名空间using system.Collection(1)存值时:哈希表以键值对的形式原创 2021-11-19 01:10:33 · 13047 阅读 · 1 评论 -
python 复习—并发编程(三)——进程、数据共享、进程锁、进程池、requests模块和bs4(beautifulsoup)模块
一、进程1、进程间数据不共享,每个进程都有自己的一个列表,如下示例: import multiprocessing data_list = [] def task(arg): data_list.append(arg) print(data_list) # 每个进程都有自己的一个列表 def run(): for i in range(10): p = multiprocessing.Process(ta原创 2021-05-26 18:06:19 · 148 阅读 · 0 评论 -
python 复习—并发编程(一)系统并发线程和进程、协程GIL锁、CPU/IO密集型计算
并发编程前言: 1、网络应用 1)爬虫 直接应用并发编程; 2)网络框架 django flask tornado 源码-并发编程 3)socketserver 源码-并发编程 2、运维领域 1)自动化开发-运维开发(机器的批量管理,任务的批量执行等)一、操作系统/应用程序a、硬件 - 硬盘 - CPU - 主板 - 显卡 - 内存 - 电源 . . . . . .b、装原创 2021-05-26 02:07:22 · 432 阅读 · 1 评论 -
python 复习——网络编程(五)——网络基础、ftp任务(上传下载进度条、计算文件大小、断点续传、搭建框架示例)
一、网络基础1、端口,是什么?为什么要有端口?端口是为了将同一个电脑上的不同程序进行隔离。IP是找电脑;端口是找电脑上的应用程序;端口范围:1 – 65535 ; 1 - 1024 不要用 ; 一般程序员用8000、8001……2、OSI 七层模型(理解记住哪七层) 应用层,使用软件; 打开软件或网站 表示层,看到数据,如图片和视频; 生产原始数据 会话层,保持登录或链接状态; 应用偷偷携带一点其他数原创 2021-05-25 17:46:02 · 525 阅读 · 8 评论 -
python 复习——网络编程(三)——网络基础、多线程、ftp任务铺垫
一、网络基础学习网络编程,了解一些网络基础的知识是必不可少的,下面学习一些基础的网络知识:1、我们的电脑里有网卡,网卡里有mac地址;2、我到某个地方插上网线,路由器或交换机中的DHCP服务为我自动分配IP地址。 IP: 192.168.13.84 IPv4 00000000.00000000.00000000.00000000 0~255 0~255 0~255原创 2021-05-25 16:23:57 · 171 阅读 · 0 评论 -
python 复习——网络编程(四)——文件上传下载、socketserver(并发)、解读socketserver源码
一、文件上传/下载1、文件上传/下载学习了socket套接字,我们现在可以写一个文件上传/下载的程序,如下示例: 服务端代码: import socket import json server = socket.socket() server.bind(('127.0.0.1',8899)) server.listen(5) while 1: print("server is working....") conn,add原创 2021-05-25 14:51:29 · 337 阅读 · 0 评论 -
python 复习——网络编程(二)模拟ssh、黏包、hashlib模块
一、模拟ssh1、subprocess模块subprocess模块是python从2.4版本开始引入的模块。主要用来取代 一些旧的模块方法,如os.system、os.spawn*、os.popen*、commands.*等。subprocess模块可用于产生进程,并连接到进程的输入/输出/错误输出管道,并获取进程的返回值。 import subprocess res = subprocess.Popen("dir", shell=Tr原创 2021-05-25 01:55:03 · 234 阅读 · 0 评论 -
python 复习——网络编程(一)——面向对象多继承(c3算法)、网络基础和编写网络相关的程序
一、面向对象多继承(c3算法)a、有多个父类先找左,再找右,如下示例: class A(object): pass class B(object): def f1(self): print('B') class C(A,B): pass obj = C() obj.f1() print(C.__mro__) # 打印出C类的继承顺序,结果如下一行: # (<class '原创 2021-05-25 00:27:08 · 324 阅读 · 0 评论 -
python 闭包迭代器生成器、列表和生成器推导式详解
一、函数名的运用(第一类对象)函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量。1,函数名的内存地址 def func(): print("呵呵") print(func) # 结果为:<function func at 0x00000000029299D8> 打印出func的内存地址2,函数名可以赋值给其他变量 def func(): print("呵呵") a = fun原创 2021-05-24 17:37:21 · 384 阅读 · 4 评论 -
Flask 安装第三方库 ImportError: No module named flask 导包失败,Python3重新安装Flask模块
在部署环境过程中,通过pip install -r requirements.txt安装包,结果启动项目时总是报错,显示没有flask模块,通过pip install flask还是不行,于是下载flask源码,再次安装得到了解决,步骤如下:1、下载flask源码git clone https://github.com/pallets/flask2、安装cd flaskpython setup.py install3、进入项目启动即可!...原创 2021-05-21 01:35:42 · 2464 阅读 · 0 评论 -
python-flask复习——(四)- flask请求上下文源码解读、http聊天室单聊/群聊(基于gevent-websocket)
一、flask请求上下文源码解读通过上篇源码分析,我们知道了有请求发来的时候就执行了app(Flask的实例化对象)的__call__方法,而__call__方法返回了app的wsgi_app(environ, start_response)方法的执行结果,而wsgi_app方法中有这样一句话:ctx = self.request_context(environ),还分析除了ctx是RequestContext类的实例化对象,而且ctx中含有有本次请求的request对象和session对象。接下来我们原创 2021-05-20 16:41:44 · 392 阅读 · 1 评论 -
python-flask复习——(三)- flask中的CBV、werkzeug+上下文初步解读、偏函数和线程安全
一、flask中的CBV对比django中的CBV,我们来看一下flask中的CBV怎么实现? from flask import Flask, render_template, url_for, views app = Flask(__name__) class Login(views.MethodView): def get(self): return "okokoko" # print(url_for("my_login")) #原创 2021-05-20 15:32:10 · 306 阅读 · 1 评论 -
python-flask复习——(二) 装饰器的坑及解决办法、flask中的路由/实例化配置/对象配置/蓝图/特殊装饰器(中间件、重定义错误页面)
一、装饰器的坑以及解决方法1、使用装饰器装饰两个视图函数,代码如下:from flask import Flask, redirect, render_template, request, session app = Flask(__name__) app.secret_key = "wanglili" # 装饰器函数 def outer(func): def inner(*args, **kwargs): if session.get("user"): # 验原创 2021-05-19 18:59:01 · 605 阅读 · 0 评论 -
flask、celery+redis 实现定时任务和异步——(三) 时间篇
一、celeryCelery 是一个异步任务队列。你可以使用它在你的应用上下文之外执行任务。总的想法就是你的应用程序可能需要执行任何消耗资源的任务都可以交给任务队列,让你的应用程序自由和快速地响应客户端请求。使用 Celery 运行后台任务并不像在线程中这样做那么简单。但是好处多多,Celery 具有分布式架构,使你的应用易于扩展。一个 Celery 安装有三个核心组件:Celery 客户端: 用于发布后台作业。当与 Flask 一起工作的时候,客户端与 Flask 应用一起运行。Celery原创 2021-05-19 16:30:25 · 8334 阅读 · 0 评论 -
flask、celery+redis 实现定时任务和异步——(一)
1. Celery简介Celery是一个异步任务的调度工具。 Celery 是 Distributed Task Queue,分布式任务队列,分布式决定了可以有多个 worker 的存在,队列表示其是异步操作,即存在一个产生任务提出需求的工头,和一群等着被分配工作的码农。Broker在 Python 中定义 Celery 的时候,我们要引入 Broker(消息中间件),中文翻译过来就是“中间人”的意思,在这里 Broker 起到一个中间人的角色。在工头提出任务的时候,把所有的任务放到 Broker 里原创 2021-05-19 15:25:02 · 1028 阅读 · 2 评论 -
python-flask 使用redis做缓存装饰器
语法:config.pyimport redis..........redis_db = redis.Redis(host="127.0.0.1", port=6379,db=1)查看键值过期时间缓存的装饰器if isinstace() 为了防止value是一个bytes类型的值,先转成字符串,然后再loads 转成字典如果没有value,就调用func(), 传入key value@wraps装饰器 可以使wrapper()对象被序列化在models.py中使用该装原创 2021-05-12 14:45:22 · 527 阅读 · 0 评论 -
python —— gevent详解(四)——项目实际应用
三种通信模型简述:(1)轮询:客户端周期性不间断高频率的给服务器发送请求:客户端请求–服务器响应–断开连接,请求次数QPS比较频繁,对客户端和服务器的配置要求比较高(2)长轮询:客户端周期性不间断的给服务器发送请求:客户端与服务器建立的连接会保持一定时间,因此请求相对不会特别频繁(3)长连接:客户端与服务端建立连接后,如果不是特殊原因(客户端主动断开,服务器故障)连接会一直保持同时通过多线程进行IO多路复用技术解决并发问题flask中基于gevent-websocket的IO多路复用技术原创 2021-05-12 10:47:50 · 755 阅读 · 0 评论 -
python-flask复习(一)
一、Python 现阶段三大主流Web框架 Django、Tornado、Flask 对比Django 主要特点是大而全,集成了很多组件(例如Models、Admin、Form等等), 不管你用得到用不到,反正它全都有,属于全能型框架,通常用于大型Web应用,由于内置组件足够强大所以使用Django开发可以一气呵成,优点是大而全,缺点也就暴露出来了,这么多的资源一次性全部加载,肯定会造成一部分的资源浪费;Tornado 主要特点是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优势,属于专注型原创 2021-05-12 01:45:31 · 966 阅读 · 1 评论 -
python —— gevent详解(三)
gevent 程序员指南gevent是一个基于 libev的并发库。它为各种并发和网络相关的任务提供了整洁的API。介绍本指南假定读者有中级Python水平,但不要求有其它更多的知识,不期待读者有 并发方面的知识。本指南的目标在于给予你需要的工具来开始使用gevent,帮助你 驯服现有的并发问题,并从今开始编写异步应用程序。Greenlets在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但原创 2021-05-11 15:26:37 · 1498 阅读 · 0 评论 -
python的第三方库
通用urllib -网络库(stdlib)。requests -网络库。grab – 网络库(基于pycurl)。pycurl – 网络库(绑定libcurl)。urllib3 – Python HTTP库,安全连接池、支持文件post、可用性高。httplib2 – 网络库。RoboBrowser – 一个简单的、极具Python风格的Python库,无需独立的浏览器即可浏览网页。MechanicalSoup -一个与网站自动交互Python库。mechanize -有状态、可编程的We原创 2021-05-07 16:52:16 · 331 阅读 · 0 评论 -
实际应用Supervisor部署Flask项目
1. 什么是supervisorsuperviosr是一个Linux/Unix系统上的进程监控工具,他/她upervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。不过同daemontools一样,它不能监控daemon进程2. 为什么用supervisor使用简单supervisor提供了一种统一的方式来start、stop、monitor你的进程, 进程可以单独控制,也可以原创 2021-04-27 19:19:05 · 2105 阅读 · 2 评论 -
Python 函数 eval 和 ast.literal_eval 的区别详解
一、eval函数eval()官方文档里面给出来的功能解释是:将字符串string对象转化为有效的表达式参与求值运算返回计算结果实例:>>> s='8*8'>>> eval(s)64>>> eval('2+5*4')22>>> x=1>>> y=4>>> eval('x+y')5>>> eval('98.9')98.9>>> eval('9原创 2021-04-02 11:05:42 · 1465 阅读 · 1 评论 -
项目中使用flask-migrate模块 进行数据库迁移
背景:项目使用的db.create_all()方法 ,想要更新数据库字段,但是不能自动映射到数据库中,必须删除表,然后重新运行db.create_all(),才会重新映射。但是之前存储的数据也都没了。因此flask-migrate就是为了解决这个问题,可以随时更新数据库字段,将修改的东西映射到数据库。编写启动脚本manager.py 用到了数据迁移flask-migrate,flask_script两个库。需要使用flask_script命令的方式启动程序入口,manager.run()#!/原创 2021-03-23 17:27:49 · 309 阅读 · 0 评论 -
python try: except: continue 语句,避免程序崩溃
1. 例如:z=0 while z!=1: print('z is:',z) a=12 #以下语句的作用,即使输入错误,可以使程序继续执行b=int(input('请输入b的数值:'))语句,避免程序崩溃!! try: b=int(input('请输入b的数值:')) except: continue #以下语句的作用,即使输入错误,可以使程序继续执行 z=int(a/b) 语句,避免程序崩溃!!原创 2021-03-15 15:35:04 · 10482 阅读 · 3 评论 -
python unicode编码和中文相互转化
如图:p = "\u65e0\u6cd5\u8bc6\u522b\u5c5e\u6027\u201cphysical_network, network_type\u201d"print p.encode('utf-8').decode('unicode_escape')》无法识别属性“physical_network, network_type”pp = "你好,这个世界"ppp = json.dumps(pp)print ppp》"\u4f60\u597d\uff0c\.原创 2021-01-18 18:57:28 · 14014 阅读 · 2 评论 -
python中 父类调用子类中的方法函数
python 在父类中如何去调用子类里面得函数方法呢?如下: 用 getattrclass father(): def call_children(self): child_method = getattr(self, 'out')# 获取子类的out()方法 child_method() # 执行子类的out()方法class children(father): def out(self): print "hehe"child =原创 2020-12-24 15:04:22 · 7726 阅读 · 4 评论 -
python后台代码书写规范与语法(1)—— response
一、 指定response返回的格式类型是json我们客户端(浏览器)的request对象发送到服务器端,服务器做出响应,把response对象发送给客户端。我们也不能把response就认为是我们看到的五颜六色的页面,那只是response中的body的一部分。它还有headers等信息,服务器端发送出来的response我们是可以参与其中的,就是我们可以控制服务器端返回给客户端的是什么。 response_data = {} response_data['subscriptions原创 2020-06-16 12:19:25 · 688 阅读 · 0 评论 -
python函数——json.loads、dumps、sort()、sorted
一、json.loads、dumpsjson是JavaScript程序编写数据结构的原生方式,在Python中,字典的格式和json格式在显示上是一样的,但是字典是dict,而json是str。在python中,json的key只能是字符串,即使字典中的key是整数,经过dumps之后,也会成字符串。1、json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行json格式的编原创 2020-06-05 11:37:03 · 1711 阅读 · 0 评论