分类目录归档:Python

python的一等函数


在Python中,函数是一等对象,而一等对象的定义是满足下述条件的程序实体: - 在运行时创建 - 能赋值给变量或数据结构中的元素 - 能作为参数传递给函数 - 能作为函数的返回结果
我们通过下面的例子来证明python中的函数是对象:
>>> def factorial(n): ... '''return n!''' ... return 1 if n < 2 else n * factorial(n-1) ... >>> factorial(41) 3345252...

Read more

Python中的字典和集合


Python标准库中的所有映射类型都是使用dict来实现的,因此他们都有一个共同的限制,即只有可散列的数据类型才可以作为映射的键,那么什么是可散列的数据类型呢?下面介绍下: 在python词汇表中,关于可散列类型的定义有这么一段话:

如果一个对象是可散列的,那么在这个对象的生命周期中,他的可散列值是不变的,而且这个对象需要实现__hash__()方法。另外可散列对象还要有__eq__()方法,这样才可以和别的键做比较,如果两个可散列对象的值是相等的,那么他们的散列值一定是相等的。

原子不可变数据类型(str,bytes和数值类型)都是可散列类型,frozenset也是可散列的,因为根...

Read more

Python中的序列


内置序列类型概述: Python标准库使用C实现了丰富的序列类型,列举如下:

容器序列 list,tuple和collsctions.deque这些序列能存放不同的数据类型。 扁平序列 str,bytes,bytearray,memoryview和array.array,这些序列只能存放一种类型。

容器序列存放的是他们所包含的任意类型的对象引用,而扁平序列存放的是值而不是引用,也就是说,扁平序列其实是一段连续的内存空间,因此扁平序列其实更加紧凑,但是他们里面只能存放例如字符,字节和数值这种基础类型。 序列类型还可以按照是否可以修改赖分类。 - 可变序列 list,bytearray,...

Read more

使用树莓派和OpenCV 实现家庭监控和移动目标探测


本篇文章主要是分享使用opencv和树莓派实现的移动目标探测,所以需要有opencv环境,另外你的电脑必须有摄像头支持。 具体参考自伯乐在线的 这篇文章 具体内容大家可以参考下原文,我在其基础上大概修改了下,下面是代码: import datetime import time import cv2 import logging import imutils import os

lastSaveTime = datetime.datetime.now() motionCounter = 0 path = os.path.split(os.path.realpath(file))[...

Read more

Django 2.0升级小记


备受期待的django 2.0已经发布了,最大的一个变化就是不再支持python2.x版本了,另外还有在使用方面有了一些变化,下面就介绍下我在升级的时候遇到的错误。

from django.core.urlresolvers import reverse

变成了 from django.urls import reverse

settings.py文件,MIDDLEWARE_CLASSES更改成了MIDDLEWARE。

django.shortcuts.render_to_response()方法已经被弃用了,现在使用django.shortcuts.ren...

Read more

使用python和opencv实现简单的网络摄像头


这个网络摄像头需要一个客户端和服务端,客户端使用opencv捕捉摄像头,通过socket将图片流传输到服务端,服务端接受图片流,使用HTTPServer渲染生成一个简单的网页,将图片流用mjpeg的方式传输到浏览器中,这样就可以直接用浏览器来查看摄像头视频了。主要的实现方式就是这样的,下面详细介绍下. 安装依赖 首先需要在客户端安装opencv,安装方式可以Google下,这里就不再赘述了,服务端需要安装pillow和numpy这两个模块。 实现代码 首先是客户端的代码: import io import socket import struct import time import d...

Read more