• Madman
  • ·

算法概述

算法是设计良好的可计算的过程,它把某个值或某些值作为输入并产生某个值或某些值作为输出。通常设计一个解决问题的算法是很容易的,但如果这个算法很慢,就要重新设计了。因为算法运行的速度取决于它运行的环境以及实现的细节,计算机科学家们倾向于把运行时间以输入的大小来表示,比如O(n)

  • Madman
  • ·

Python3 csv模块处理报表数据 - PyQt5制作图形界面

使用Python3 csv模块处理快收后台导出的商场优惠活动交易数据,统计各类优惠券的核销数量,以及实收款等汇总数据。测试数据 "1. 财务明细数据.csv" 已经删除了敏感信息,由于客户不想使用脚本,所以使用 PyQt5 编写了图形界面,再使用 pyinstaller 打包为可执行程序

  • Madman
  • ·

Python 日志模块logging

Python程序中可以使用内置的logging模块,方便的记录运行日志,将日志信息进行分类存储,当程序出现BUG时,可以通过分析日志来定位问题所在

  • Madman
  • ·

Python 正则表达式 re 模块

如果你想匹配的是字面字符串,那么你通常只需要调用基本字符串方法就行, 比如 str.find() , str.endswith() , str.startswith() 或者类似的方法。对于复杂的匹配需要使用正则表达式和 re 模块,如果你想使用同一个模式去做多次匹配,你应该先将模式字符串预编译为模式对象。match() 总是从字符串开始去匹配,如果你想查找字符串任意部分的模式出现位置,...

  • 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 闭包与装饰器

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

  • Madman
  • ·

Python序列化模块 - pickle与json

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

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

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

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