python

2021

Python: JSON 数据转化成 Python 对象的方法

1 问题描述

JSON 格式的数据在和服务器通信过程中很常见,用 Python 处理我们可以用 json 库来读取,将其转化成一个字典。不过字典访问语法太繁琐了,我们需要将其转化一般对象,然后用访问类属性的方法去访问 Key-Value 对。直接硬写的非常繁琐,我们需要显式地讲类定义出来,然后一个个读取属性然后完成复制。我们需要一个更加符合 DRY (Dont Repeat Yourself) 原则的方法。

Jul 20
Python 以及 Bash 处理命令行参数的模板

Python 和 Bash 是很方便的便携命令行工具的语言。在实现命令行工具时,为了保障工具的灵活性,我们希望很多参数可以通过命令行来设置。这篇文章我们整理一下 Python 和 Bash 脚本编写过程中命令行参数的处理方法。

Jun 17
Python 中的 Inspect 模块

1 背景

今天在 Github 的时间线上看到了一个有意思的 Python 库,名字叫做 "IceCream"。这个库用来取代 print() 函数,实现更加可控且优雅的调试输出。IceCream 的接口形式非常简单,只要直接将函数的调用形式传入即可。如下面的代码:

1
2
3
4
5
6
from icecream import ic

def foo(i):
return i + 333

ic(foo(123))

会产生下面的输出

1
ic| foo(123): 456

这个是怎么实现的呢?我查了一下代码发现 ic 函数(实际上一个实现了 __call__ 的类的实例)主要使用了 inspect 这个库。这是一个 Python 的标准库而我从来没有用过。

May 27

2020

[翻译]从头开始训练一个卷积神经网络

原文地址是: Training a Convolutional Neural Network from scratch。原文的撰写时间是2019年6月7日。

在这篇文章中,我们将会深入了解卷积神经网络(Convolutional Neural Networks, CNN),重点是如何训练一个卷积神经网络。这篇文章会教你如何推导梯度,实现backprop过程(只使用numpy),并最终建立起一个完整的训练的工作流。这里我们架设你对于什么是卷积神经网络有一个基础的了解。如果你还缺乏最基本的知识,可以阅读原文作者的文章。同时文章中部分地方还假定你对于多元微积分有一定的了解基本上你好好上过大学的高等数学应该就能理解

Feb 29

2019

旧文迁移|Django 部署:Nginx+Gunicorn+virtualenv+supervisor+PostgreSQL

Django 是最受欢迎的基于 Python 的 web 框架之一,也非常适合新手入门。虽然 Django 为我们提供了一个用于测试的轻量级 server,但这个 server 不能用于实际生产环境的部署。最早的 Django 的部署方法推荐的是 Apache+mod_wsgi。演化到现在,django 的部署方法也变得越来越弹性、有效,也更加的复杂了。在下面的教程中我们需要使用下面的这些工具:

  • Nginx: Web 服务器
  • Gunicorn: WSGI 服务器
  • virtualenv: Python 虚拟环境工具
  • supervisor: 进程监管工具
  • PostgreSQL: 数据库(也可以使用 MariaDB)
Aug 30
Python下的音频处理库librosa打开文件是显示NoBackendError的解决

近日在 django 项目中采用了 librosa 来分析用户上传的音频,主要是对其做一定间隔的采样用于绘制波形图。在本地(MacOS)上工作正常,部署到 Ubuntu 服务器后,自己手动用 python 方式运行 django 的 server 时,工作都是正常的,然而当我用 superviosr 挂起之后就一直报 NoBackendError 的错误,反复检查了 FFmpeg 的安装,应该是没有问题的。网上搜了一下没有看到比较合适的解决办法,故不得不自己读源码来调试了。

Jun 26
Matplotlib in Virtualenv

我使用的是 macOS 系统。当在虚拟环境中尝试使用 matplotlib 时,会出现如下的报错:

1
ImportError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more informatio
May 16