在Python中,函数是一等对象,而一等对象的定义是满足下述条件的程序实体:
- 在运行时创建
- 能赋值给变量或数据结构中的元素
- 能作为参数传递给函数
- 能作为函数的返回结果
我们通过下面的例子来证明python中的函数是对象:
>>> def factorial(n):
... '''return n!'''
... return 1 if n < 2 else n * factorial(n-1)
...
>>> factorial(41)
3345252...
分类目录归档:Python
Python中的字典和集合
Python标准库中的所有映射类型都是使用dict来实现的,因此他们都有一个共同的限制,即只有可散列的数据类型才可以作为映射的键,那么什么是可散列的数据类型呢?下面介绍下: 在python词汇表中,关于可散列类型的定义有这么一段话:
如果一个对象是可散列的,那么在这个对象的生命周期中,他的可散列值是不变的,而且这个对象需要实现__hash__()方法。另外可散列对象还要有__eq__()方法,这样才可以和别的键做比较,如果两个可散列对象的值是相等的,那么他们的散列值一定是相等的。
原子不可变数据类型(str,bytes和数值类型)都是可散列类型,frozenset也是可散列的,因为根...
Python中的序列
内置序列类型概述: Python标准库使用C实现了丰富的序列类型,列举如下:
容器序列 list,tuple和collsctions.deque这些序列能存放不同的数据类型。 扁平序列 str,bytes,bytearray,memoryview和array.array,这些序列只能存放一种类型。
容器序列存放的是他们所包含的任意类型的对象引用,而扁平序列存放的是值而不是引用,也就是说,扁平序列其实是一段连续的内存空间,因此扁平序列其实更加紧凑,但是他们里面只能存放例如字符,字节和数值这种基础类型。 序列类型还可以按照是否可以修改赖分类。 - 可变序列 list,bytearray,...
使用树莓派和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))[...
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...
使用python和opencv实现简单的网络摄像头
这个网络摄像头需要一个客户端和服务端,客户端使用opencv捕捉摄像头,通过socket将图片流传输到服务端,服务端接受图片流,使用HTTPServer渲染生成一个简单的网页,将图片流用mjpeg的方式传输到浏览器中,这样就可以直接用浏览器来查看摄像头视频了。主要的实现方式就是这样的,下面详细介绍下. 安装依赖 首先需要在客户端安装opencv,安装方式可以Google下,这里就不再赘述了,服务端需要安装pillow和numpy这两个模块。 实现代码 首先是客户端的代码: import io import socket import struct import time import d...