Python的Django中将文件上传至七牛云存储的代码分享
最近在写的一个django小项目需要实现用户上传图片的功能,使用到了七牛云存储,特此记录下来。这里我使用的七牛python SDK...
View Article详解duck typing鸭子类型程序设计与Python的实现示例
在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。这个概念的名字来源于由James Whitcomb...
View Article详解字典树Trie结构及其Python代码实现
字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是字符串。Trie 的强大之处就在于它的时间复杂度。它的插入和查询时间复杂度都为 O(k) ,其中 k 为 key 的长度,与 Trie 中保存了多少个元素无关。Hash 表号称是 O(1) 的,但在计算 hash...
View ArticlePython中的descriptor描述器简明使用指南
当定义迭代器的时候,描述是实现迭代协议的对象,即实现__iter__方法的对象。同理,所谓描述器,即实现了描述符协议,即__get__, __set__, 和 __delete__方法的对象。单看定义,还是比较抽象的。talk is cheap。看代码吧:class WebFramework(object): def __init__(self, name='Flask'): self.name =...
View ArticlePython黑魔法Descriptor描述符的实例解析
在python中,访问一个属性的优先级顺序按照如下顺序:1:类属性2:数据描述符3:实例属性4:非数据描述符5:__getattr__()方法 这个方法的完整定义如下所示:def __getattr(self,attr) :#attr是self的一个属性名 pass;...
View Article深入理解Python变量与常量
变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。常量是一块只读的内存区域,常量一旦被初始化就不能被改变。变量命名字母、数字、下划线组成,不能以数字开头,前文有说不在赘述。变量赋值python中的变量不需要声明,变量的赋值操作即是变量的声明和定义的过程。每个变量在内存中创建都包括变量的标识、名称、和数...
View ArticlePython中的Descriptor描述符学习教程
Descriptor是什么?简而言之,Descriptor是用来定制访问类或实例的成员的一种协议。额。。好吧,一句话是说不清楚的。下面先介绍一下python中成员变量的定义和使用。我们知道,在Python中定义类成员和C/C++相比得到的结果具有很大的差别。如下面的定义: class Cclass { int I; void func(); }; Cclass...
View Article从源码解析Python的Flask框架中request对象的用法
from flask import requestFlask 是一个人气非常高的python Web框架,笔者也拿它写过一些大大小小的项目,Flask 有一个特性我非常的喜欢,就是无论在什么地方,如果你想要获取当前的request对象,只要 简单的:从当前request获取内容: method: 起始行,元数据 host: 起始行,元数据 path: 起始行,元数据 environ: 其中的...
View ArticlePython搭建APNS苹果推送通知推送服务的相关模块使用指南
APNS 是苹果为IOS设备提供的推送服务,全称是(Apple Push Notification service)。 如果你有接触移动互联网相关的开发的话,应该对它很熟悉。接下来我会给大家简单介绍一下python下的一些APNS相关的模块以及其特点。模块介绍:PyAPNs项目地址:...
View ArticlePython的Django框架中使用SQLAlchemy操作数据库的教程
零、SQLAlchemy是什么?SQLAlchemy的官网上写着它的介绍文字:SQLAlchemy is the python SQL toolkit and Object Relational Mapper that givesapplication developers the full power and flexibility of SQL.SQLAlchemy...
View Article实例解析Python中的__new__特殊方法
__new__ 方法是什么?如果将类比喻为工厂,那么__init__()方法则是该工厂的生产工人,__init__()方法接受的初始化参 数则是生产所需原料,__init__()方法会按照方法中的语句负责将原料加工成实例以供工厂出货。而 __new__()则是生产部经理,__new__()方法可以决定是否将原料提供给该生产部工人,同时它还决定着出...
View Article详解Python中的__new__、__init__、__call__三个特殊方法
__new__: 对象的创建,是一个静态方法,第一个参数是cls。(想想也是,不可能是self,对象还没创建,哪来的self)__init__ : 对象的初始化, 是一个实例方法,第一个参数是self。__call__ : 对象可call,注意不是类,是对象。先有创建,才有初始化。即先__new__,而后__init__。上面说的不好理解,看例子。1.对于__new__class...
View ArticlePython实现优先级队列结构的方法详解
最简单的实现一个队列至少满足2个方法,put和get.借助最小堆来实现.这里按"值越大优先级越高"的顺序.#coding=utf-8 from heapq import heappush, heappop class PriorityQueue: def __init__(self): self._queue = [] def put(self, item, priority):...
View ArticleRuby中钩子方法的运用实例解析
通过使用钩子方法,可以让我们在Ruby的类或模块的生命周期中进行干预,可以极大的提高编程的灵活性。与生命周期相关的钩子方法有下面这些:类与模块相关 Class#inherited Module#include Module#prepended Module#extend_object Module#method_added Module#method_removed...
View ArticleRuby on Rails中Rack中间件的基础学习教程
rack是ruby服务器和rack应用程序之间的一个框架,rails,sinatra都是基于rack构建的,都属于rack应用程序。rack提供了一个标准的接口,用于与服务器进行交互。标准的rack程序是一个可以响应call的对象,可以是对象、Proc、lambda甚至是method,它接收env参数(环境对象),返回一个数组,数组包括: 状态(status),http响应状态码...
View ArticleRuby面向对象编程中类的方法与类的扩展
类方法类方法其实质是生活在该类的单件类中的单件方法。其定义方法有三种,分别是:# 法一def MyClass.a_class_method; end# 法二class MyClass def self.anther_class_method; endend# 法三*class MyClass class << self def yet_another_class_method; end...
View Article详解Ruby中的单件方法和单件类
单件方法Ruby允许给单个对象增加方法,这种只针对单个对象生效的方法,称为单件方法示例代码str = “just a regular string”def str.title? self.upcase == selfendstr.title? # => falsestr.methods.grep(/title?/) # => [:title?]str.singleton_methods...
View ArticleRuby环境下安装使用bundler来管理多版本的gem
有了rbenv来管理多版本的ruby环境,我们还需要一个能管理多版本gem(比如rails)的工具,那就是bundler了,项目背景不细说了,需要了解的直接到官网http://bundler.io/,这里只讲一些实际使用经验。安装gem install bundler使用mkdir app1; cd app1;echo "source 'https://ruby.taobao.org/'" >...
View Article浅谈Ruby on Rails下的rake与数据库数据迁移操作
不知道你有没有把数据迁移写入Migration文件的经历,相信无论是老鸟还是新手都这样干过吧。事实上,这样做并不是行不通,只不过这样的实践慢慢会给你引入一些不必要的麻烦。一般认为db/migrate文件夹里的内容是关于你数据库Schema的演变过程,每个新的开发或线上环境都要通过这些Migration来构建可用的数据库。但如果这里装入了,负责细节的业务代码,比如一些历史遗留数据的迁移代码之类的,当一...
View Article