python
文章平均质量分 92
zhubaoJay
share...
展开
-
记一次自动创建禅道用户实践
背景需求:实现自己的研发协同平台,可以一键免密登录禅道、自动创建禅道用户,从而打通各个系统,达到统一化管理。禅道版本:专业版 9.0.3python版本:3.8.0实践1. 打开禅道后台管理页面,查看禅道API接口针对上述需求,开始进行摸索。因禅道数据库管理严格,不能直接操作数据库写入数据,且为了更友好,决定通过禅道提供的API,进行用户创建。这里不得不吐槽一下禅道的API接口,虽然提供了创建用户的这个API地址,但是参数很明显不全,我创建用户的用户名,...原创 2021-02-09 10:24:45 · 1452 阅读 · 0 评论 -
python requests post传参data和json的区别
json不管参数是str还是dict类型,如果不指定headers中的content-type,默认为application/json,当参数为dict类型时,request.body中内容为b'{"name":"zhubaoxiang"}' 当参数类型为str时,request.body中内容为b'"{\\"name\\":\\"zhubaoxiang\\"}"',可以看到,json默认会帮你json dumps一下。我们观看requests源码也得出相同结论: def prepare_b原创 2020-06-23 09:57:46 · 1039 阅读 · 0 评论 -
python 迭代器
什么是迭代器?迭代器就是重复地去做一些事情,可以简单地理解为循环。迭代器是一个对象,若要实现一个迭代器,类中需要有__iter__()和—__next__()方法,缺一不可。简单的写一个迭代器: class Test(): def __init__(self): self.count = 0 self.a = [1, 2, 3] ...原创 2017-11-28 15:43:21 · 297 阅读 · 0 评论 -
python 生成器
什么是生成器首先,生成器是函数,它记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第N次)调用跳转至该函数,而上次调用的所有局部变量都保持不变。生成器的特点生成器是一个函数,而且函数的参数都会保留;迭代到下一次调用时,所使用的参数都是第一次所保留下来的,即在整个所有函数调用的参数都是第一次所调用时保留的,而不是新创建的。如何创建一个生产器创建生产器的关键字为yie原创 2017-11-28 17:21:43 · 305 阅读 · 0 评论 -
python2与python3编码
一 什么是编码?基本概念很简单。首先,我们从一段信息即消息说起,消息以人类可以理解、易懂的表示存在。我打算将这种表示称为“明文”(plain text)。对于说英语的人,纸张上打印的或屏幕上显示的英文单词都算作明文。其次,我们需要能将明文表示的消息转成另外某种表示,我们还需要能将编码文本转回成明文。从明文到编码文本的转换称为“编码”,从编码文本又转回成明文则为“解码”。编码问...转载 2018-08-23 16:48:02 · 302 阅读 · 0 评论 -
魔术方法和迭代器
--------------------------------------最近有看了书,发现之前写的迭代器笔记错误连连,可见当时还是没有彻底理解该知识点(现在可能也还没有彻底理解 skr skr~~~)。现做如下补充:魔术方法__开头的方法我们称之为魔术方法,魔术方法是python语法的关键。我们都知道在python世界里,万物皆对象,对象由类实例化而来,类中常见的包含属性和方法,...原创 2018-09-01 10:50:33 · 192 阅读 · 0 评论 -
Python 3.5 协程究竟是个啥
Python 3.5 协程究竟是个啥2016/09/23 · 基础知识 · 2 评论 · 协程原文出处: snarky 译文出处:Yushneng 作为 Python 核心开发者之一,让我很想了解这门语言是如何运作的。我发现总有一些阴暗的角落我对其中错综复杂的细节不是很清楚,但是为了能够有助于 Python 的一些问题和其整体设计,我觉得我应该试着去理解 Python 的核心语...转载 2018-09-07 10:21:29 · 409 阅读 · 0 评论 -
python的复制,深拷贝和浅拷贝的区别
python的复制,深拷贝和浅拷贝的区别在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用一般有三种方法,alist=[1,2,3,["a","b"]](1)直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变>>> b=ali...转载 2019-06-05 09:43:49 · 25325 阅读 · 3 评论 -
python中的select模块介绍
python中的select模块介绍:Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kqueue方法(freeBSD系统)select方法:进程指定内核监听哪些文件描述符(最多监听1024个fd)的哪些事件,当没有文件描述符事件发生时,进程被阻...转载 2019-06-18 15:39:48 · 2243 阅读 · 0 评论 -
python __call__类方法
__call__这个类方法,在平常用的还是蛮多的。举个例子说明其用法,代码如下:#coding=utf-8class CallTest(object): def __init__(self): print 'I am __init__' def __call__(self): print 'I am __call__'原创 2017-10-26 15:19:50 · 794 阅读 · 1 评论 -
python time模块
1)time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。>>> time.localtime()time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=14, tm_min=14, tm_sec=50, tm_wday=3, tm_yd原创 2017-09-30 11:14:42 · 279 阅读 · 0 评论 -
celery 任务队列预取机制
我们启动celery基本命令为:celery -A mytask worker --loglevel=info当以此命令启动celery后,celery默认情况下执行任务会有个预取机制(prefetching),预取是什么呢,如下一张图:我们假设有两个worker,但当任务量较多的时候,celery有个任务队列,每个wroker执行完了,就从这个队列中取任务接着执行。但当有原创 2017-04-07 17:00:10 · 5889 阅读 · 3 评论 -
celery简介
Celery是Python开发的分布式任务调度模块。Celery的架构由三部分组成,消息中间(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。如下图: l 消息中间件:Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成,包括RabbitMQ, Redis,MongoDB(experi原创 2017-03-30 19:25:58 · 856 阅读 · 0 评论 -
python GIL
一、GIL全称global interpreter lock,顾名思义,是一个全局的锁;二、GIL是python解释器(CPython)所引入,不用CPython的解释器不受此限制;三、GIL的存在会对多线程运行效率有很大影响,甚至比不过单线程运行效率; 比如:当前有4核CPU,我们开了4个线程,每个线程被分配在4个核上。由于GIL的存在,同一时间点,只有一个线程获得锁,也就是说...原创 2017-05-24 14:55:43 · 271 阅读 · 0 评论 -
python函数的参数定义和可变参数
我们会经常看到 def func(*args, **kwargs)这类型的函数定义,今天做个笔记以免忘记。*args表示,以元组的形式接收N个参数,例如:def func(a, b, *args): print a print b print argsfunc(1, 2, 3, 4, 5)打印结果:12(3,4,5)原创 2017-05-08 10:46:18 · 575 阅读 · 0 评论 -
python实现单例模式
直接代码如下:#coding:utf-8class Test: __OBJ = None @staticmethod def getInstance(): if Test.__OBJ is None: Test.__OBJ = Test() return Test.__OBJ调用方式:obj = Test.getInstance()描原创 2017-06-01 16:08:26 · 353 阅读 · 0 评论 -
python 特殊的类属性
首先我们定义一个类,如下:class Test(object): ''' hello test ''' COUNT = 0 def run(self): pass我们利用内置函数 dir来看下这个Test类中有什么属性和方法:>>> dir(test.Test)['COUNT', '__class__',原创 2017-06-08 17:01:18 · 452 阅读 · 0 评论 -
python IP格式校验
校验对于web开发同学来说,写代码时是必不可少的。 不管前端有没有做校验,后端还是必须得要做校验。出于安全性考虑,可以有效的防止sql注入。 校验其实是一件很无聊的事情,重复写着代码。所以整理出通用的接口还是蛮有必要的。今天贴出一版python的IP校验接口,包括IPv4和IPv6的校验IPv4:def validate_ip(ip_str): sep原创 2017-06-10 14:35:30 · 5772 阅读 · 0 评论 -
base64编码原理以及python中的base64模块
平常工作中,大家对base64肯定不陌生。但作为程序员,只会对其使用还是远远不够的,本着知其然知其所以然,看了下base64的编码原理,在此做个笔记。首先,说一下base64的用途,base64编码是将二进制字节流编码为可打印的64个字符。有些网络传输并不支持二进制编码的字节流的传输,若要解决此问题,就可以用base64编码。另外,base64可以作为简单的加密工具。原理:众所周知原创 2017-06-09 14:51:04 · 6499 阅读 · 0 评论 -
python 装饰器
我的理解: 1. 当一个函数用了装饰器,则就不走自己内部的代码了(走装饰器),会将自己的函数地址传给装饰器。 2. 装饰器会返回一个函数指针,实际调用则走的是这个函数指针。 3. 由于装饰器获得了这个函数的地址,则在装饰器内,可以实际调用这个函数(必须调用,否则装饰器不再是装饰,而是篡改)。 4. 在装饰器内调用这个函数前,可以有一些其他的操作(装饰器的本质原创 2017-03-07 17:06:20 · 484 阅读 · 0 评论