摘要: GeoHash算法原理 1.基本原理 GeoHash算法采用将经纬度网转化成一个个小区域,为落在相同区域中的点生成同样的GeoHash字符串,通过将经纬度二维数据转化成一维的字符串,简化了对地理位置操作的复杂性。 如下图所示,一片区域被分割成9块,落在相同区域内的点有着相同的GeoHash字符串。通 阅读全文
posted @ 2021-03-02 15:09 叶迩 阅读(1994) 评论(1) 推荐(0) 编辑
摘要: 装饰器的作用 当我们需要为函数拓展新的功能,但是又不能修改函数的内部结构时,就可以通过装饰器来完成。通过装饰器为函数拓展功能符合“对于扩展是开放的,对于修改是封闭的”这一开闭原则。下面我们将通过六个步骤了解如何使用装饰器。 步骤一 我们先定义一个函数f,现在我们需要为其添加运行时打印出当前时间的功能 阅读全文
posted @ 2020-08-15 17:35 叶迩 阅读(428) 评论(0) 推荐(0) 编辑
摘要: Python中的作用域 在一般编程语言中,作用域从小到大有块级、函数、类、模块、包五个级别。但是在Python中没有块级作用域的存在,比如for语句中的代码的作用域就和for自身所在的作用域同级(if、with等语句中的代码相同)。 下例在全局作用域中的print函数就可以读取到if语句中的变量a: 阅读全文
posted @ 2020-08-14 20:13 叶迩 阅读(794) 评论(1) 推荐(0) 编辑
摘要: 枚举的结构 from enum import Enum class Color(Enum): RED = 1 YELLOW = 2 BLUE = 3 print(Color.RED) # Color.RED 从enum导入Enum,并让自定义的枚举类继承Enum 枚举类内的标签最好用大写字母来表示常 阅读全文
posted @ 2020-08-14 17:23 叶迩 阅读(6583) 评论(0) 推荐(0) 编辑
摘要: 问题引出 一般情况下类方法的调用是通过先创建类对象再通过a.b()的方式来调用,但是如果类中只有一个方法或者一个方法的使用频率非常高,那么就可以为这个方法命名为__call__来简化调用。 __call__ 存在__call__方法的类对象被称为可调用对象,它的作用可以总结为以下两点: 简化了对象下 阅读全文
posted @ 2020-08-13 17:09 叶迩 阅读(8036) 评论(0) 推荐(4) 编辑
摘要: 问题引出 通过SQLAlchemy来修改数据库时,经常需要使用db.session.commit()和db.session.rollback()结合异常处理语句来实现事务回滚。如果在所有需要修改数据库的地方都加上异常处理和回滚语句就过于麻烦了,而通过with语句结合@contextmanager我们 阅读全文
posted @ 2020-08-13 01:11 叶迩 阅读(1290) 评论(0) 推荐(0) 编辑
摘要: 问题引出 在Python中with的用法一文中已经写到了什么是上下文管理器,以及如何创建一个符合上下文协议的自定义类。那么如果我们需要将一个非自定义的类改成一个上下文管理器又该怎样实现? 我们可以为需要改写的普通类创建一个子类,在其中添加上__enter__和__exit__方法通过继承父类的方式实 阅读全文
posted @ 2020-08-13 00:07 叶迩 阅读(5837) 评论(0) 推荐(0) 编辑
摘要: 问题引出 在业务处理时经常需要在数据的读取和存入前对数据进行预处理,通过@property和@*.setter两个装饰器就可以方便的实现。 @property python中的@property装饰器可以总结为两个作用: 让函数可以像普通变量一样使用 对要读取的数据进行预处理 示例1 我们先编写一个 阅读全文
posted @ 2020-08-12 00:43 叶迩 阅读(18240) 评论(1) 推荐(3) 编辑
摘要: 问题引出 当需要将一个数据字典中的数据保存到类对象中时,用动态赋值的方式会比单独属性赋值更方便。 动态赋值的基础 hasattr(a,b):判断对象a中是否有属性b getattr(a,b,c):从对象a中取属性b的值,如果b不存在则返回c(参数c可以不写) setattr(a,b,c):为对象a添 阅读全文
posted @ 2020-08-11 23:31 叶迩 阅读(2783) 评论(0) 推荐(1) 编辑
摘要: map 功能:对序列中的每一项进行处理后返回一个相同长度的结果序列(迭代器,需要List转换) 具体过程:一个序列对应一个参数,依次对序列中的每一项进行处理,处理函数结果需要为表达式 arr = [1,2,3] m = map(lambda x:x+1, arr) print(list(m)) # 阅读全文
posted @ 2020-08-11 18:25 叶迩 阅读(287) 评论(0) 推荐(0) 编辑