Python
凡凡不知所错
I hate being kept in the dark
展开
-
Python动态配置 -- Dynaconf
1. 初始化dynaconf init -f <fileformat> 命令可以初始化dynaconf,它支持toml|yaml|json|ini|py几种文件类型,toml也是默认的文件格式,他会自动创建:├── config.py # Where you import your settings object (required)├── .secrets.toml # Sensitive data like passwords and tokens (optional)原创 2021-12-01 15:48:10 · 2256 阅读 · 0 评论 -
Python项目如何区分配置开发环境/生产环境settings
基于django的灵感,我们可以首先将项目配置文件夹配置成下面这样:conf/ __init__.py base.py settings_dev.py settings_prod.py然后我们需要在__init__.py文件中根据当前所属环境来引用对应的settings文件:import importlibclass Settings(object): """The implementation class of the settings.""" def __init__(self,原创 2020-08-06 19:53:40 · 3673 阅读 · 2 评论 -
python使用typing
def greeting(name: str) -> str: return 'Hello ' + name复杂类型typing:from typing import ListVector = List[float]def scale(scalar: float, vector: Vector) -> Vector: return [scalar * num...原创 2020-04-26 09:05:52 · 2388 阅读 · 0 评论 -
Python Websocket 实例 -- http接收数据websocket推出去
我们使用python的channels库来使用WebsocketHTTP接收数据:class MessageConsumer(generic_http.AsyncHttpConsumer): async def handle(self, message): # handle the message await channel_layer.group_send( group_na...原创 2020-01-07 19:44:20 · 981 阅读 · 0 评论 -
使用context manager创建thrift client的统一入口
"""Utilities for building the thrift transport client."""import contextlibfrom thrift.protocol import TBinaryProtocolfrom thrift.transport import TSocket, TTransport@contextlib.contextmanagerd...原创 2020-01-07 11:59:49 · 166 阅读 · 0 评论 -
Linux上python如何切换版本
假设原本机子上面就有python2.7,然后我们使用pyenv安装了python3.6Method one下面我们为python2.7和3.6分别设置权重:sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1sudo update-alternatives --install /usr...原创 2019-03-07 13:52:08 · 665 阅读 · 0 评论 -
消息队列(1) -- Blinker信号库 for Python(单应用)
blinker是一个python的信号库,既支持简单的对象到对象通信,也支持针对多个对象进行组播,信号就是在框架的核心功能或者一些Flask拓展发生动作时所发送的通知,可以帮助解耦应用,解耦就是模块间的耦合严重了,修改一些东西,可能会牵扯到很多其他的地方,所以需要减少类之间的相互依赖,所以需要代码解耦。创建信号:>>> from blinker import signal&...转载 2019-04-08 09:41:19 · 1600 阅读 · 0 评论 -
python的进阶用法
以列表的某个值为key进行排序:alist = [[1,2], [2,3], [3,4], [2,6], [4,7]]sorted_list = sorted(alist, key=operator.itemgetter(1))这样的话就是对大列表中的每个小列表的第二个值进行排序以字典的value进行排序:adict = {'1': 10, '2': 22....}sorted_l...原创 2019-02-26 20:21:53 · 505 阅读 · 0 评论 -
Python协程
※ python协程协程也称之为微线程,协程的作用是在执行函数A的情况下,可以随时中断去执行函数B,然后终端继续执行函数A,但是这个过程并没有函数调用,协程只有一个线程在执行。所以协程由于是程序主动控制切换的,所以没有线程切换的开销(存在两个必要的开销:线程的创建和上下文的切换,切换前,上个任务的状态会被保存,切换回来,再加载这个任务的状态),所以执行效率很高,使用于IO密集型,如果是CPU密...原创 2019-08-29 15:41:09 · 238 阅读 · 0 评论 -
使用Python解析XML
XML是可拓展标记语言,用来传输和储存数据解析XML的三种方法常见的XML编程接口有DOM和SAX,Python有三种方法解析XML:SAX, DOM,ElementTree。SAX means simple API for XML:python标准库包含SAX解析器,用事件驱动模型,通过在解析XML过程中触发一个个事件并调用用户定义的回调函数来处理XML文件。DOM将XML数据在内...原创 2018-11-09 16:19:12 · 344 阅读 · 1 评论 -
Python处理Json数据
JSON是一种轻量级的数据交换格式,易于读写,也易于机器的解析。使用Python处理JSON:Python自己有json模块,用于将Python对象和json字符串进行相互的转换。编码:使用json.dumps()将Python队形编码转换成json字符串>>> import json>>> python_obj = [[1,2,3],123,123...原创 2018-11-08 16:23:14 · 180 阅读 · 0 评论 -
Python的错误调试以及单元测试unittest
错误处理:程序运行的过程中如果发生了错误,就可以事先约定返回一个错误代码,但是用错误码表示是否出错十分的不方便,所以高级语言通常都内置了一套try...except...finally的错误处理机制,Python也有这样的错误处理机制:try: print('try...') r = 10 / 0 print('result:', r)except ZeroDivis...原创 2018-11-14 14:03:08 · 2178 阅读 · 0 评论 -
Python面向对象编程,元编程metaclass
面向对象的最重要概念就是类class和实例instance,类是抽象的模板,实例是根据类创建出来的具体对象。没有继承类的情况下,就使用object类,这是所有类最终都会继承的类。类的__init__方法:由于类起到模板的作用,所以在创建实例的时候,把一些我们认为必须绑定的属性写进特殊定义的__init__方法:class Student(object): def __init__(...翻译 2018-11-22 11:26:04 · 2552 阅读 · 0 评论 -
python可迭代对象,迭代器和生成器
迭代是数据处理的基石,扫描内存中放不下的数据集时,我们要找到一种惰性获取数据项的方式,即按需一次获取一个数据项,这就是迭代器模式。所有的生成器都是迭代器,因为生成器实现了迭代器的接口,迭代器用于从集合中取出元素,生成器用于凭空生成元素。所有的序列都可以迭代:序列可以迭代的原因:iter函数解释器需要迭代对象x的时候,会自动调用iter(x)函数,这个iter函数有这些作用:检查对象是否...原创 2018-12-27 14:58:43 · 285 阅读 · 0 评论 -
命令行执行python文件显示ModuleNotFoundError: No module named ‘...‘解决办法
在一个项目中如果我们使用类似pycharm这样的软件来写项目,项目中有些文件需要单独执行的时候,我们通常会使用软件自带的执行按钮来运行python脚本,但是有时候我们需要使用在命令行内敲击python run.py这样的方式来运行脚本,这时就会出现ModuleNotFoundError: No module named ‘…’ 这样的报错。这样报错的原因是我们import模块的时候使用的是相对路...原创 2019-02-15 09:24:12 · 46762 阅读 · 7 评论