PYTHON
python
zhexiao27
Keep going.
展开
-
Python 中 else语句的其他用法
else 子句不仅能在 if 语句中使用,还能在 for、 while 和 try 语句中使用。for:仅当 for 循环运行完毕时(即 for 循环没有被 break 语句中止)才运行 else 块。while:仅当 while 循环因为条件为假值而退出时才运行 else 块。try:仅当 try 块中没有异常抛出时才运行 else 块。注意:else 子句抛出的异常不会由前面的 excep原创 2017-09-07 09:23:55 · 484 阅读 · 0 评论 -
python functools.partial 的理解
首先我们看看官方文档的定义: Return a new partial object which when called will behave like func called with the positional arguments args and keyword arguments keywords. If more arguments are supplied to the call...原创 2018-07-20 09:55:11 · 2230 阅读 · 0 评论 -
namedtuple 赋予默认值
首先讲讲什么是namedtuple。 namedtuple能够用来创建类似于元祖的数据类型,除了能够用索引来访问数据,能够迭代,更能够方便的通过属性名来访问数据。在python中,传统的tuple类似于数组,只能通过下标来访问各个元素,我们还需要注释每个下标代表什么数据。通过使用namedtuple,每个元素有了自己的名字,类似于C语言中的struct,这样数据的意义就可以一目了然了。...原创 2018-08-03 14:03:38 · 3496 阅读 · 0 评论 -
vagrant + docker + pycharm 建立一套完整的Python开发环境
vagrant服务针对Vagrantfile配置,我的主要配置有这几个:# 系统版本config.vm.box = "ubuntu/xenial64"# 配置IPconfig.vm.network "private_network", ip: "192.168.33.33&am原创 2018-09-18 15:15:42 · 1807 阅读 · 0 评论 -
bisect 二分查找模块
bisect 模块包含两个主要函数, bisect 和 insort两个函数都利用二分查找算法来在有序序列中查找或插入元素。bisect(haystack,needle)在haystack(干草垛)里搜索 needle(针)的位置,该位置满足的条件是,把 needle 插入这个位置之后, haystack 还能保持升序。也就是在说这个函数返回的位置前面的值,都小于或等于 needle 的值。i...原创 2018-12-03 14:47:44 · 14973 阅读 · 2 评论 -
python lru_cache 备忘(memoization)功能
装饰器 functools.lru_cachefunctools.lru_cache 是非常实用的装饰器,它实现了备忘(memoization)功能。这是一项优化技术,它把耗时的函数的结果保存起来,避免传入相同的参数时重复计算。LRU三个字母是“Least Recently Used”的缩写,表明缓存不会无限制增长,一段时间不用的缓存条目会被扔掉。生成第 n 个斐波纳契数这种慢速递归函...原创 2018-12-12 18:01:52 · 3103 阅读 · 2 评论 -
python的 垃圾回收和弱引用
del和垃圾回收del 语句删除名称,而不是对象。 del 命令可能会导致对象被当作垃圾回收,但是仅当删除的变量保存的是对象的最后一个引用,或者无法得到对象时。有个 __del__ 特殊方法,但是它不会销毁实例,不应该在代码中调用。即将销毁实例时, Python 解释器会调用 __del__ 方法,给实例最后的机会,释放外部资源。在 CPython 中,垃圾回收使用的主要算法是...原创 2018-12-19 15:02:07 · 1670 阅读 · 2 评论 -
深刻理解 python中函数的参数 引用的传递方式
函数的参数作为引用Python 唯一支持的参数传递模式是共享传参(call by sharing)。共享传参指函数的各个形参获得实参中各个引用的副本。也就是说,函数内部的形参是实参的别名。解释 Python 中参数传递的方式时,人们经常这样说: “参数按值传递,但是这里的值是引用。”这么说没错,但是会引起误解,因为在旧式语言中,最常用的参数传递模式有按值传递(函数得到参数的副本)和按引...原创 2018-12-19 15:04:36 · 4467 阅读 · 0 评论 -
python 字典、集合
可变对象与不可变对象Python的每个对象都分为可变和不可变,主要的核心类型中,数字、字符串、元组是不可变的,列表、字典是可变的。最简单的判断方法就是看这个变量值更新后,内存地址有没有变化。因为可变对象数据都是就地更新,而不可变对象数据修改都是开辟新内存存新数据。比如:整数是不可变对象,所以值更新了会新开辟一块内存存新值;而集合是可变对象,会就地更新原内存地址指向的值。a = {1, 2,...原创 2018-12-06 17:49:52 · 1884 阅读 · 0 评论 -
名称改写(name mangling) 、__slots__、 类属性覆盖
Python的私有属性和“受保护的”属性如果以 __mood 的形式(两个前导下划线,尾部没有或最多有一个下划线)命名实例属性, Python 会把属性名存入实例的 __dict__ 属性中,而且会在前面加上一个下划线和类名。这个语言特性叫名称改写(name mangling)。class Dog: def __init__(self, mood): self....原创 2018-12-21 17:18:51 · 514 阅读 · 0 评论 -
ubuntu 16.04 安装 python 3.6、python 3.7
Python 3.6$ sudo add-apt-repository ppa:jonathonf/python-3.6$ sudo apt-get update$ sudo apt-get install python3.6 Python 3.7$ sudo apt-get install build-essential checkinstall python-dev p...原创 2018-12-29 09:47:40 · 5860 阅读 · 1 评论 -
Structured Streaming 词频统计模型
环境本次使用全部以单机环境运行,下面附上spark和kafka的主要配置。spark版本:spark-2.4.4-bin-hadoop2.7.tgz (https://www.apache.org/dyn/closer.lua/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz)spark-env.shSPARK_LOCAL_IP=192.16...原创 2019-09-12 14:37:28 · 510 阅读 · 0 评论 -
Structured Streaming + Kafka 统计模型(输入kafka,输出console)
环境本次使用全部以单机环境运行,下面附上spark和kafka的主要配置。spark版本:spark-2.4.4-bin-hadoop2.7.tgz (https://www.apache.org/dyn/closer.lua/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz)spark-env.shSPARK_LOCAL_IP=192.16...原创 2019-09-12 14:44:08 · 498 阅读 · 0 评论 -
使用 heapq 实现一个优先级队列
import heapqfrom collections import namedtupleclass PriorityQueue: def __init__(self): self._queue = [] self._index = 0 def push(self, item, priority): heapq.heapp...原创 2018-07-13 10:39:30 · 751 阅读 · 4 评论 -
Python 命名风格、命名指南、类命名
Python中使用的命名风格包括:常量:使用大写,如果需要可以加下划线私有变量:使用前缀下划线加字母函数和方法:使用小写,如果需要可以加下划线参数:使用小写,如果需要可以加下划线类:驼峰式命名。如果是模块的私有类,还可能有一个前缀下划线模块和包:模块名称小写,不带下划线名称修饰:在Python中,名称修饰(name-mangling)特性表示如果一个方法和属性使用了双...原创 2018-06-25 11:21:50 · 12687 阅读 · 0 评论 -
Python 上下文管理器和with块
上下文管理器和with块上下文管理器对象存在的目的是管理 with 语句,就像迭代器的存在是为了管理 for 语句一样。with 语句的目的是简化 try/finally 模式。这种模式用于保证一段代码运行完毕后执行某项操作,即便那段代码由于异常、 return 语句或 sys.exit() 调用而中止,也会执行指定的操作。 finally 子句中的代码通常用于释放重要的资源,或者还原临时变更的状态原创 2017-09-07 10:14:13 · 535 阅读 · 0 评论 -
Python 可迭代的对象、迭代器和生成器
迭代是数据处理的基石。扫描内存中放不下的数据集时,我们要找到一种惰性获取数据项的方式,即按需一次获取一个数据项。这就是迭代器模式(Iterator pattern)。所有生成器都是迭代器,因为生成器完全实现了迭代器接口。迭代器用于从集合中取出元素;而生成器用于“凭空”生成元素。我们要实现一个 Sentence 类,以此打开探索可迭代对象的旅程。我们向这个类的构造方法传入包含一些文本的字符串,然后可以原创 2017-09-06 17:49:59 · 1056 阅读 · 0 评论 -
Python 协程的详细用法和例子
从句法上看,协程与生成器类似,都是定义体中包含 yield 关键字的函数。可是,在协程中, yield 通常出现在表达式的右边(例如, datum = yield),可以产出值,也可以不产出 —— 如果 yield 关键字后面没有表达式,那么生成器产出 None。协程可能会从调用方接收数据,不过调用方把数据提供给协程使用的是 .send(datum) 方法,而不是next(…) 函数。==yield原创 2017-09-07 17:38:55 · 36276 阅读 · 13 评论 -
Python 使用 asyncio 包处理并发
阻塞型I/O和GILCPython 解释器本身就不是线程安全的,因此有全局解释器锁(GIL),一次只允许使用一个线程执行 Python 字节码。因此,一个 Python 进程通常不能同时使用多个 CPU 核心。然而,标准库中所有执行阻塞型 I/O 操作的函数,在等待操作系统返回结果时都会释放GIL。这意味着在 Python 语言这个层次上可以使用多线程,而 I/O 密集型 Python 程序能从中受原创 2017-09-08 16:29:30 · 5311 阅读 · 0 评论 -
使用 supervisor 管理 Celery 服务
安装> sudo apt-get install supervisor配置配置文件可以写 /etc/supervisor/conf.d 下面并且以 .conf 结束。> sudo mkdir /var/log/celery> sudo chmod -R 777 /var/log/celery/> sudo touch /var/log/celery/resource原创 2018-01-04 15:54:47 · 1454 阅读 · 2 评论 -
Django Rest Framework 使用 Django-debug-toolbar 优化代码
安装使用从pip安装$ pip install django-debug-toolbar 配置django settings$ vim settings.py""INSTALLED_APPS += ( 'debug_toolbar', 'debug_test',)MIDDLEWARE_CLASSES += ( 'debug_tool...原创 2018-05-21 18:10:44 · 1536 阅读 · 0 评论 -
使用 Django REST framework 的 Viewsets
简单点说,DRF的Viewsets就允许你将一批功能类似或者有流程的接口写在一个类里面。比如我有一个流程:需要先A, 后B,再C,后D,完成4个顺序接口,则可以这样使用Viewsets。view.pyfrom rest_framework import viewsetsfrom rest_framework.decorators import list_routeclass U...原创 2018-05-28 10:15:37 · 1417 阅读 · 0 评论 -
crontab 的使用
crontab定义 .---------------- 分钟(1 - 59) | .------------- 小时(0 - 23) | | .---------- 日 (1 - 31) | | | .------- 月 (1 - 12) | | | | .---- 星期(0 - 6,0代表星期天) | | | | | * * * * * 执行的命令# 表示每晚的21...原创 2018-06-06 13:57:57 · 301 阅读 · 0 评论 -
Celery 项目架构和使用 systemctl 正式版部署
基本实例项目layouttest/__init__.py /celery_app.py /tasks.py /t1.pycelery_app.py(保存celery应用)from celery import Celeryapp = Celery( 'celery_app', broker='redis://localhost:63...原创 2018-06-21 11:59:40 · 1143 阅读 · 0 评论 -
Python 描述符 (descriptor) 详解
什么是描述符python描述符是一个“绑定行为”的对象属性,在描述符协议中,它可以通过方法重写属性的访问。这些方法有 get(), set(), 和delete()。如果这些方法中的任何一个被定义在一个对象中,这个对象就是一个描述符。讲解描述符前,先看一下属性:dict (每个对象均具备该属性)作用:字典类型,存放本对象的属性,key(键)即为属性名,value(值)即为属性的值,...翻译 2018-06-22 10:26:26 · 3176 阅读 · 1 评论 -
python3 type和object的关系
学习python的同学都知道这么几句话: 1. object类是所有新式类的父类 2. type是所有类的类那么type和object是什么关系呢? object是一个新式类,我们可以通过object.class和object.bases来获取object所属的类和他的父类。首先比较object和type:print('object', object.__class__, o...原创 2018-06-22 16:42:16 · 2711 阅读 · 0 评论 -
Django @cache_property 原理
class cached_property(object): """ Decorator that converts a method with a single self argument into a property cached on the instance. Optional ``name`` argument allows you to make c...原创 2018-06-25 09:26:55 · 1636 阅读 · 1 评论 -
Structured Streaming + Kafka 统计Window模型
环境本次使用全部以单机环境运行,下面附上spark和kafka的主要配置。spark版本:spark-2.4.4-bin-hadoop2.7.tgz (https://www.apache.org/dyn/closer.lua/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz)spark-env.shSPARK_LOCAL_IP=192.16...原创 2019-09-16 15:31:27 · 640 阅读 · 0 评论