python
leason00
工程师
展开
-
【python学习笔记】对配置文件.ini进行增删改查
新手上路,代码写的不够简洁明了,欢迎指出。1.先导入configobj库文件可以用pip直接安装#!/usr/bin/python# -*- coding: utf-8 -*-import jsonfrom configobj import ConfigObj2.增添section这里是前后端分离的例子,从前端接收json数据,然后写入配置文件中d原创 2016-09-06 08:58:04 · 2960 阅读 · 0 评论 -
Python设计模式--策略模式
说明Python设计模式和广为人知的java设计模式是有区别的,通过Python的一些语言特性,可以简化很多设计模式。例如策略模式,利用作为一等对象的函数,使用函数可以有效减少代码行数。例子:处理订单折扣电商领域有个功能明显可以使用“策略”模式,即根据客户的属性或订单中的商品计算折 扣。假如一个网店制定了下述折扣规则。 - 有 1000 或以上积分的顾客,每个订单享 5% 折扣。 - 同一订单原创 2017-11-07 21:07:48 · 2310 阅读 · 0 评论 -
【python学习笔记】线程Threading
说明Threading用于提供线程相关的操作。线程是应用程序中工作的最小单元,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。thread方法: - t.start() : 激活线程 - t.getName() : 获取线程的名称 - t.setName() : 设置线程的名称 - t.name原创 2017-10-25 17:17:46 · 1637 阅读 · 0 评论 -
【python学习笔记】Python实现协程yield方法和gevent库
说明协程最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。因为协程是一个线程执行,那怎么利用多核CPU呢?最简单的方法是多进程+协程,既充原创 2017-10-25 17:19:57 · 1882 阅读 · 0 评论 -
Python字典集合数据结构深入理解
说明在python中字dict和set是非常常用的两种数据结构,但是两种数据结构为什么要放在一起讨论。因为他们之所以拥有非常快的速度,是因为他们的内部结构都是散列表(散列表其实是一个稀疏数组总是有空白元素的数组称为稀疏数组)dict中的散列表散列表算法正常想要获取dict中的值,首先要知道key通过dict[key]获取对应的value,在散列表中为了达到这种操作,首先会计算key的hash值即原创 2017-11-02 20:49:28 · 5348 阅读 · 0 评论 -
【python学习笔记】Python对经纬度处理
说明因为地球是球面,所以地球平面间的距离也得根据球面来计算。 连个问题: - 两经纬度点之间的距离 - 根据一个给定经纬度的点,进行附近若干距离地点查询两点之间的距离# 根据经纬度计算距离def __distance(lon1, lat1, lon2, lat2): # 经度1,纬度1,经度2,纬度2 (十进制度数) """ 根据经纬度计算距离 :param lon原创 2017-10-17 14:29:28 · 17231 阅读 · 5 评论 -
Python并发concurrent.futures和asyncio
Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码。从Python3.2开始,标准库为我们提供了concurrent.futures模块,concurrent.futures 模块的主要特色是 ThreadPoolExecutor 和 ProcessPoolExecutor 类,这两个类实现的接口能分别在不同的线程或进程中执行可调原创 2017-11-13 11:29:58 · 4002 阅读 · 0 评论 -
Python垃圾回收机制
Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题。通过“分代回收”(generation collection)以空间换取时间来进一步提高垃圾回收的效率。一、引用计数在Python中,大多数对象的生命周期都是通过对象的转载 2017-11-17 11:11:10 · 597 阅读 · 0 评论 -
Python设计模式--工厂模式
说明工厂模式是一个在软件开发中用来创建对象的设计模式。工厂模式包涵一个超类。这个超类提供一个抽象化的接口来创建一个特定类型的对象,而不是决定哪个对象可以被创建。为了实现此方法,需要创建一个工厂类创建并返回。 当程序运行输入一个“类型”的时候,需要创建于此相应的对象。这就用到了工厂模式。在如此情形中,实现代码基于工厂模式,可以达到可扩展,可维护的代码。当增加一个新的类型,不在需要修改已存在的类,只增加原创 2017-11-15 17:03:16 · 1383 阅读 · 0 评论 -
Python设计模式--建造者模式
说明将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。我们想要创建一个由多个部分构成的对象,而且它的构成需要一步接一步地完成。 只有当各个部分都创建好,这个对象才算是完整的。这正是建造者设计模式(Builder design pattern)的用武之地。建造者模式将一个复杂对象的构造过程与其表现分离,这样,同一个构造 过程可用于创建多个不同的表现。一般实现抽象class原创 2017-11-15 17:32:05 · 806 阅读 · 0 评论 -
Python文件操作os,shutil模块
说明os 模块提供了非常丰富的方法用来处理文件和目录常用OS模块方法OS模块os.getcwd() – 得到当前工作的目录os.remove() – 删除指定文件os.rmdir() – 删除指定目录(空目录)os.mkdir() – 创建目录os.makedirs() – 递归创建目录os.path.isfile() – 判断指定对象是否为文件。是返回True,否则Falseos.p原创 2017-12-08 14:14:55 · 845 阅读 · 0 评论 -
Python设计模式--修饰器模式
说明修饰器的定义为动态地给一个对象添加一些额外的职责。在Python中Decorator mode可以按照像其它编程语言如C++, Java等的样子来实现,但是Python在应用装饰概念方面的能力上远不止于此,Python提供了一个语法和一个编程特性来加强这方面的功能。即装饰器:def dec(fn): return fn@decdef fun(): pass简单例子需要在某个原有功原创 2017-12-08 14:16:25 · 682 阅读 · 0 评论 -
Python设计模式--适配器模式
说明所谓适配器模式是指是一种接口适配技术,它可通过某个类来使用另一个接口与之不兼容的类,将一个类的借口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。简单实现class Obj(object): def method(self): print 'obj'class Obj2(object): def new_me原创 2017-11-21 11:58:41 · 528 阅读 · 0 评论 -
【python学习笔记】Python中排序sorted()和list.sort()
说明sorted 和list.sort 都接受key, reverse定制。但是区别是。list.sort()是列表中的方法,只能用于列表。而sorted可以用于任何可迭代的对象。list.sort()是在原序列上进行修改,不会产生新的序列。所以如果你不需要旧的序列,可以选择list.sort()。 sorted() 会返回一个新的序列。旧的对象依然存在。sort是容器的函数:sort(cmp=No原创 2017-09-21 16:36:29 · 2265 阅读 · 0 评论 -
【python学习笔记】Python异常处理raise、try...except、断言assert
说明写代码时,我们有时希望捕捉到程序异常但程序不退出,有时候不确定程序是否会异常,有时候希望自己定义异常,中断程序运行。异常处理raise使用raise抛出异常,一旦执行了raise语句,raise后面的语句将不能执行。try: s = None if s is None: print "s None" raise NameError原创 2017-09-21 16:33:07 · 8583 阅读 · 0 评论 -
【python学习笔记】获取当前日期前后N天或N月的日期的相关方法
最近发现一个python的时间组件,很好用分享出来!(忘记作者名字了,在这里先感谢了)# -*- coding: utf-8 -*-'''获取当前日期前后N天或N月的日期'''from time import strftime, localtimefrom datetime import timedelta, dateimport calendaryear = st转载 2016-09-05 10:38:17 · 4897 阅读 · 1 评论 -
【python学习笔记】关于python Flask前后端分离跨域问题
关于python Flask前后端分离跨域问题前后端分离过程中,前后端对接测试难免遇到跨域问题。因为是个新司机,所以在我经过一天的测试,才找到解决办法=-= 第一种方法from functools import wrapsfrom flask import make_responsedef allow_cross_domain(fun): @wraps(fun) def wra原创 2016-09-06 16:52:02 · 3221 阅读 · 0 评论 -
【python学习笔记】python使用sqlalchemy连接mysql数据库
python使用sqlalchemy连接mysql数据库,sqlalchemy是python的orm程序,在整个python界当中相当出名。orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直原创 2016-09-28 16:15:12 · 694 阅读 · 0 评论 -
【python学习笔记】flask实现简单的接收json返回json的接口
python flask实现简单的接收json返回json的接口,微型的前后端分离接口,非常简单直接上代码。原创 2016-09-10 15:04:37 · 38294 阅读 · 0 评论 -
【python学习笔记】Python函数式编程
说明函数式编程是使用一系列函数去解决问题,按照一般编程思维,面对问题时我们的思考方式是“怎么干”,而函数函数式编程的思考方式是我要“干什么”。在Python中有lambda,map,reduce,filter等内置方法。匿名函数(lambda)语法lambda args: expression参数(args)的语法与普通函数一样,同时表达式(expression)的值就是匿名函数调用的返回值;而la原创 2017-09-23 16:44:09 · 1857 阅读 · 0 评论 -
【python学习笔记】Python数据结构(列表,元组,字典,集合)
说明数据结构的概念很好理解,就是用来将数据组织在一起的结构。换句话说,数据结构是用来存储一系列关联数据的东西。在Python中有四种内建的数据结构,分别是List、Tuple、Dictionary以及Set。列表python里面用的最多最常用的数据类型,可以通过下标来访问,可以理解为java或者c里面的数组.但是功能比数组强大n倍,list可以放任意数量的python对象,可以是字符串,字符,整数,原创 2017-09-06 16:34:34 · 2772 阅读 · 0 评论 -
【python学习笔记】Python面向对象的理解(封装,继承,多态)
说明提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritance)和封装(Encapsulation)。Python也是一种支持OOP的动态语言,本文将简单阐述Python对面向对象的支持。在讨论Python的OOP之前,先看几个OOP术语的定义:类:对具有相同数据和方法的一组对象的描述或定义。对象:对象是一个类的实例。实例(instance):一个对原创 2017-09-06 16:46:56 · 8338 阅读 · 1 评论 -
【python学习笔记】Python自带特殊方法一览
python自带特殊方法原创 2017-09-09 11:41:05 · 1170 阅读 · 0 评论 -
【python学习笔记】Python装饰器
装饰器是什么意思一个大牛举的例子: 内裤可以用来遮羞,但是到了冬天它没法为我们防风御寒,聪明的人们发明了长裤,有了长裤后宝宝再也不冷了,装饰器就像我们这里说的长裤,在不影响内裤作用的前提下,给我们的身子提供了保暖的功效。装饰器本质上是Python函数,可以为已存在的对象添加额外的功能,同时装饰器还可以抽离出与函数无关的重用代码。具体应用场景如:插入日志、性能测试、事务处理、缓存、权限校验等。举个栗原创 2017-09-18 10:03:15 · 1859 阅读 · 0 评论 -
【python学习笔记】Python生成器yield
生成器(generator)生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束。生成器是可迭代对象,是惰性求值的,在需要的时候才产生结果,而不是立即产生结果。列表推导式产生的是一个列表,结果已经存在于内存之中了。可以减少内存消耗,提高代码可读性生成器函数example:生成自然数的平方yield生成器def a(N):原创 2017-09-18 10:04:26 · 1804 阅读 · 0 评论 -
【python学习笔记】Python反射机制
说明说到反射,让人熟知的eval函数,python除了这个函数,还有import() ,getattr、hasattr、setattr、delattr等方法eval函数class Test(object): def __init__(self): self.name = 'leason' def foo(self,name): self.name = n原创 2017-09-20 10:28:28 · 2243 阅读 · 0 评论 -
【python学习笔记】Python中*args 和**kwargs的用法
Python中*args 和**kwargs的用法说明python中默认缺省参数,参数名传参,可变长度传参。缺省参数def foo(a,b=8): print a,bfoo("leason") #leason 0foo("leason",88) #def 88参数名传参数def foo(a,b):原创 2017-09-20 14:16:37 · 10311 阅读 · 2 评论 -
Python属性函数property
说明Python中的property被称为属性函数,它可以将类方法转换为只读属性,重新实现一个属性的setter和getter方法将类方法准换成只读属性正常情况下使用装饰器形式@property使用 如:class Test(object): def __init__(self, a, b): """Constructor""" self.a = a原创 2017-12-11 16:13:01 · 678 阅读 · 0 评论