• Madman
  • ·

查找最大或最小的N个元素

如果只想查找最小或最大的元素的话(N=1),请使用 min() 或 max() 函数;如果 N 的大小和容器大小接近的时候,通常先排序这个容器然后再使用切片操作会更快点( sorted(items)[:N] 或者是 sorted(items)[-N:] );当要查找的元素个数相对比较小的时候(N大于1,且N小于容器元素数量),使用 heapq 模块中的 nsmallest() 和...

  • Madman
  • ·

Python 单例模式

单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场,比如整个应用只生成一个配置文件的实例对象。Python 的模块是天然的单例模式,这在大部分情况下应该是够用的,当然,我们也可以使用装饰器、元类等方法

  • Madman
  • ·

Python 读取配置文件

Python3中使用 configparser.ConfigParser 模块来解析配置文件,在每个配置文件中,配置数据会被分组 section,每个分组又包括多个配置项 option 。可以使用 get 方法获取配置项的值,或使用 set 方法重新设置配置项的值

  • Madman
  • ·

Python 闭包与装饰器

在函数内部再定义一个函数,并且内部函数用到了外部函数作用域里的变量(enclosing),那么将这个内部函数以及用到的外部函数内的变量一起称为闭包(Closure)。装饰器(decorator)接受一个callable对象(可以是函数或者实现了__call__方法的类)作为参数,并返回一个callable对象,它经常用于有切面需求的场景,比如:插入日志、性能测试(函数执行时间统计)、事务处理...

  • Madman
  • ·

Python序列化模块 - pickle与json

Python语言特定的序列化模块是pickle,但如果要把序列化搞得更通用、更符合Web标准,就可以使用json模块。json模块的dumps()和loads()函数是定义得非常好的接口的典范。当我们使用时,只需要传入一个必须的参数。但是,当默认的序列化或反序列机制不满足我们的要求时,我们又可以传入更多的参数来定制序列化或反序列化的规则,既做到了接口简单易用,又做到了充分的扩展性和灵活性

  • Madman
  • ·

Python文件读写操作

Python中可以使用open()方法来打开一个文件描述符,并指定相应的访问模式,来决定是读取文件还是写入文件。读写完成后,切记要调用close()方法来关闭文件描述符。Python中不仅可以保存数据到磁盘上的文件中,还可以在内存中读写数据,比如StringIO和BytesIO这种file-like object

理解Python浅拷贝和深拷贝的区别-min.png
  • Madman
  • ·

理解Python浅拷贝和深拷贝的区别

Python赋值操作或函数参数传递,传递的永远是对象引用(即内存地址),而不是对象内容。在Python中一切皆对象,对象又分为可变(mutable)和不可变(immutable)两种类型。对象拷贝是指在内存中创建新的对象,产生新的内存地址。当顶层对象和它的子元素对象全都是immutable不可变对象时,不存在被拷贝,因为没有产生新对象。浅拷贝(Shallow...

Python容器-min.png
  • Madman
  • ·

Python基础: 容器

字符串是Python中最常用的数据类型,我们可以使用单引号'或双引号"来创建字符串。input函数获取的输入数据全是字符串类型。字符串对象是不可变对象,无法修改内容,所谓"修改"只是创建新的字符串对象,并把原对象引用指向该新字符串对象。一旦创建了元组,则不能再修改元组的元素,包括不能删除其中的元素

Flask应用部署架构图.jpg
  • Madman
  • ·

CentOS7部署Flask/Gunicorn/Ngi...

当你用Flask框架在本地完全开发好一个应用程序后,想部署到服务器上,让互联网用户可以访问它,这与搭建本地开发环境还是有一些不一样的地方。首先,我们假设在服务器上安装了CentOS-7系统,使用git来上传和后续更新程序源代码,由于Flask自带的开发Web服务器性能不足以应对生产环境的并发访问,所以我们使用Gunicorn来替代它,同时,整个Web应用有许多静态资源,而Nginx非常善于处...