2022-11-20 19:34:25 +08
字数:1238
标签:
Python
在一般的语言中(Java:正式在下!),字符串是不能用+或连加来进行大量构造的。
因为字符串是不可变对象(或基本类型),N个字符的连加,会额外产生N-1个对象。
但Python是个例外。
2022-03-08 17:55:31 +08
字数:1023
标签:
Python
Django
DRF(Django REST Framework)不支持带前缀的资源。
所有资源,默认都应该在URL的根路径下。
这里提供了一种支持前缀的解决方案,并且支持带参数的前缀。
2021-09-04 17:17:55 +08
字数:1362
标签:
Python
取消一个在排队的Celery的Task,操作是简单的,用revoke就行。
但是,如果要很好地取消一个正在运行的Task,则没那么容易。
2021-05-13 19:04:55 +08
字数:4772
标签:
Linux
Python
从源码安装、手动管理,到update-alternatives,再到pyenv,又回归pyenv-install+update-alternatives。
本文算是把Linux下,Python多版本管理的主要骚操作都讲完了。
此外,也稍微提点了一下原理。
2021-05-11 21:52:18 +08
字数:1025
标签:
Python
如何判断两个浮点数是否相等?
这是一个所有编程语言都有的小坑。
Python中虽然统一了float和double,但不可避免地仍然有这个问题。
2021-01-19 19:16:01 +08
字数:1394
标签:
Python
在系统负载较高,消息队列里堵了太多东西的情况下,Celery容易出现重复执行一个Task,甚至不止一次的情况。
本文给出三个解决方案。
2020-12-18 20:34:19 +08
字数:1062
标签:
Python
Linux
Docker
有时,Python发布的程序需要被打包为一个文件夹、甚至一个文件发布。
目前(2020)最佳的策略是使用pyinstaller。
本文介绍了这种方案的配置方法,以及它的2个问题。
2020-09-26 21:33:57 +08
字数:2312
标签:
Bash
Linux
Python
本文内容承接《安装Powerline并配置Vim、Bash、tmux、IPython、pdb》,介绍Powerline显示内容的定制方法。
并且介绍自定义组件的开发方法。
2020-09-21 21:59:17 +08
字数:1546
标签:
Bash
Python
Linux
本文主要介绍基于Powerline的CLI美化配置。
2020-08-27 20:54:47 +08
字数:1517
标签:
Python
作为一个分布式异步计算框架,Celery虽然常用于Web框架中,但也可以单独使用。
虽然常规搭配的消息队列是RabbitMQ,但是由于某些情况下系统已经包含了Redis,那就可以复用。
本文撇开Web框架,介绍基于Redis配置Celery任务的方法。
2020-08-17 22:10:46 +08
字数:942
标签:
Python
S3协议操作对象存储服务,通常是实现上传下载功能。
但是在某些场景下,程序不具备操作权限,或为了安全原因而缩小权限配置,需要实现无鉴权的上传与下载。
这时可以用S3协议的Presigned URLs来实现无鉴权读写操作。
2020-08-14 21:22:39 +08
字数:2554
标签:
Python
K8s
官方缺乏文档,只有示例。
本文给出Python SDK操作Kubernetes Job的更多示例代码,以及相关解释。
2020-05-31 16:17:14 +08
字数:820
标签:
vscode
Python
在中国,想要下载Visual Studio Code,有时真是一件不容易的事。
本文提供一个Python脚本,自动从中国的azure下载。能略快一些。
2020-05-03 22:04:37 +08
字数:1385
标签:
Python
Python的面向对象类继承方面,采用了类似C++多重继承的方式。
本文介绍了MRO,以及在多重继承中使用super()遇到object的一个坑。
2020-03-31 23:30:16 +08
字数:614
标签:
Python
有时候,一个Python包,在不同操作系统,需要使用不同的依赖包。
比如,pykerberos只支持Linux平台,而Windows平台则需要使用winkerberos。
除了在setup.py里写if else这种丑陋的做法以外,可以使用两种setuptools支持的方式。
2019-09-22 11:01:45 +08
字数:521
标签:
Python
Django
直接用Pylint来检查Django,容易产生误报。
对此,有个Pylint插件pylint-django,可以解决这个问题。
同理,还有一个pylint-flask插件可以解决Flask的问题。
2019-09-07 17:42:05 +08
字数:785
标签:
Python
通过一个匹配多行并计数的案例,展示了re.MULTILINE的用法,和一些Python代码的优化细节。
2019-03-30 22:44:05 +08
字数:2562
标签:
Python
也许Python由于2和3的分裂,Python发展出了虚拟环境(virtualenv)的技术。
本文介绍了Virtualenv的安装、使用与工作原理。
2019-03-18 22:57:40 +08
字数:1228
标签:
Nginx
Python
Docker
本文介绍如何利用Nginx(Docker)架设Webdav服务,并用curl以及Python的requests进行简单的使用。
2019-01-28 22:10:05 +08
字数:905
标签:
Python
Test
在Python程序中,用[requests]发起网络请求,是常见的操作。
但如何测试,是一个麻烦的问题。
2019-01-01 12:01:42 +08
字数:1977
标签:
Vim
Python
Test
用Vim写Python,曾是一件流行的事,而今已经变得小众。
实际上,Vim仍然是Python开发的最佳利器之一,在很多方面,甚至优于PyCharm这样的IDE。
本文会基于Vim,介绍Python的风格统一与格式化方法。
并且,还会集成它们到pytest中去。
2018-11-21 22:22:14 +08
字数:2530
标签:
Python
Python中的多线程、包括协程,由于CPython的GIL(Global interpreter Lock
,全局解释锁)问题,只能实现并发(Concurrency),不能实现并行(Parallelism)。
因此,在并行计算场景,多进程是Python最简单的选择。
2018-11-17 09:30:39 +08
字数:2656
标签:
Django
Python
对网站、微服务来说,log是比较重要的运维工具。
Django的log,主要是复用Python标准库中的logging模块,在settings.py中进行配置。
此外,也提供了一些独特的扩展。
2018-10-28 09:18:37 +08
字数:1976
标签:
Python
因为Python系缺失一个Wizard,也缺少项目结构的标准,于是出现了cookiecutter。
这是一个项目生成器,也可称为引擎,因为它只完成了最核心的功能。
真正决定一个项目长什么样的模板,却可以自由定制。
也因此,它能生成任何一种语言的项目。
2018-08-19 21:23:50 +08
字数:987
标签:
Python
atexit是标准库中一个简单的小模块,作用是提供退出的回调。
如果有什么事是在退出时需要做的,就可以使用它。
但仅限于比较简单的程序。
实际上,最好不要使用它。
2018-04-26 17:34:39 +08
字数:1167
标签:
Python
手动管理Python包的版本号一段时间后,寻求自动化的手段,是自然而然的。
2018-04-23 20:54:15 +08
字数:1541
标签:
Python
Test
pytest不仅是一个功能强大的测试框架,同时也是一个插件化的测试平台。
2018-03-23 17:18:29 +08
字数:1538
标签:
Python
从一个标准的Python环境,到一个可以做数据分析的环境,还需要有一些准备工作。
本文就是记录这些准备工作,便于查阅。
2018-03-20 16:17:05 +08
字数:1883
标签:
Python
C
SWIG的一个优点是,受到了distutils/setuptools的原生支持。
在setup.py文件中,可以很方便地直接把*.i文件作为源文件进行配置,而不用手写编译脚本。
本文通过一个Demo项目,来讲解如何在setup.py中对SWIG进行配置。
2018-03-06 18:10:30 +08
字数:1226
标签:
Python
C
在Python项目中使用C/C++的代码,除了少数场景,其它都有数据交换的需求。
而C++的vector、map等,则是常见的数据容器。
本文介绍如何利用SWIG,在Python中调用STL的string、vector和map。
2018-03-01 10:52:14 +08
字数:845
标签:
Python
C
本文介绍了一个在利用setuptools的Extension来编译C++代码时,会出现的-Wstrict-prototypes警告,及其解决方案。
2018-02-13 23:54:09 +08
字数:2030
标签:
Python
Test
单元测试的条件有限,在测试过程中,有时会遇到难以准备的环境。
比如,与服务器的网络交互、对数据库的读写等。
而mock的技术,就是在测试时,不修改源码的前提下,替换某些对象,模拟测试环境。
2018-01-28 23:53:18 +08
字数:2870
标签:
Python
Test
会写测试,和写好测试,是差距很大的两种境界。
本文介绍pytest中setup与teardown的写法,算是单元测试的进阶内容吧。
2018-01-26 10:58:17 +08
字数:1263
标签:
Python
记录一下《蛇宗三字经》,以便自省。
2018-01-22 16:35:09 +08
字数:1676
标签:
Python
C
在Python代码中调用C/C++代码,这需求是比较常见的。
毕竟,当代软件世界的基础设施领域是C语言的天下,很多开发工作不可避免地要与它打交道。
而C++则是家族的嫡长子,也占据了一些不可替代的位置。
本文着重介绍ctypes与SWIG,也会提一下其它方案。
2018-01-19 00:08:25 +08
字数:2310
标签:
Python
Test
pytest,曾用名py.test。
它能兼容unittest与nose的测试代码,写法简洁,并且还有自己的独到之处。
本文仅介绍pytest测试最基本的写法,以及如何在一个Python项目进行初始化。
2018-01-13 22:45:56 +08
字数:2004
标签:
GitHub
Python
在GitHub上做CI,大哥是Travis。
不过,Travis只支持Ubuntu和Mac OS X环境。
这就给二哥AppVeyor留下了生存空间,它专门负责做Windows环境的CI,并且对Windows生态下的.NET、Azure等,提供了很好的支持。
本文介绍如何用AppVeyor来做纯Python项目的集成测试。
2018-01-11 18:09:55 +08
字数:1711
标签:
Python
C
跑通SWIG的example代码,比Boost.Python的HelloWorld要简单一些。
不过,对不熟悉gcc的人来说,还是很费劲。
本文基于官方教程,补充了一个可行的Makefile。
2018-01-11 14:19:51 +08
字数:1578
标签:
Python
C
对于C/C++开发经验不多、或者只有Python经验的人来说,要跑通一个Boost.Python的HelloWord程序,是一件不容易的事。
本文介绍如何避开bjam,用Makefile打通最不容易的那个环节——编译。
2018-01-05 16:17:17 +08
字数:2127
标签:
Python
在setup.py中,一般需要要调用setup()函数。
这个函数有诸多参数,其中一类是require,指定了一些需要的Python包。
2018-01-03 17:48:46 +08
字数:1474
标签:
Python
Git
有时,需要做复杂的Git操作,并且有很多中间逻辑。
用Shell做复杂的逻辑运算与流程控制就是一个灾难。
所以,用Python来实现是一个愉快的选择。
这时,就需要在Python中操作Git库。
2017-11-22 15:29:30 +08
字数:1543
标签:
Python
读、或者说解析XML的需求很常见,而写、或者说生成XML的需求就比较少见。
本文简单介绍如何使用minidom,生成一个XML文件。
2017-08-28 10:35:21 +08
字数:3757
标签:
Python
PyPI
Nexus
既然已经有了pypi.python.org这个官方源,为什么还需要一个本地源、私有源、企业源?
本文评估了多个PyPI服务的特性与优缺点,并且给出了一些建立本地PyPI服务的建议。
2017-07-24 15:56:49 +08
字数:1132
标签:
Python
从C语言家族,进入Python世界的程序员,当心都被Python中的and与or骗了!
2017-07-20 18:02:52 +08
字数:1277
标签:
Python
本文介绍了Python中的bool类型,以及相关的一些概念。
2017-07-08 23:02:23 +08
字数:1453
标签:
Python
本文以Python 3来介绍作用域、LEGB规则、global与nonlocal关键字等内容。
2017-07-01 23:52:31 +08
字数:1030
标签:
Python
Python中的else设计,令人赞叹!
2017-06-28 11:28:53 +08
字数:667
标签:
Python
LDAP
Docker
本文介绍如何在Docker镜像python:alpine中安装python-ldap模块,并且尽量保持镜像的身材。