随笔分类 - Python
摘要:在python进行像b = a这样的赋值时,只会创建一个对a的新引用,使a的引用计数加1,而不会创建新的对象: 这样,当引用的对象是可变对象的时候(列表,字典,可变集合等),会产生意料之外的行为: 因为a和b引用的是同一对象,改变其中一个,另外一个也会随之改变。当我们想建立一个副本而不是引用时,可以
阅读全文
摘要:python中的标识符可以包含数字、字母和_,但必须以字母或者_开头,其中以_开头的命名一般具有特殊的意义。 前后均带有双下划线__的命名 一般用于特殊方法的命名,用来实现对象的一些行为或者功能,比如__new__()方法用来创建实例,__init__()方法用来初始化对象, x + y操作被映射为
阅读全文
摘要:作用域规则 命名空间是从名称到对象的映射,Python中主要是通过字典实现的,主要有以下几个命名空间: 内置命名空间,包含一些内置函数和内置异常的名称,在Python解释器启动时创建,一直保存到解释器退出。内置命名实际上存在于一个叫__builtins__的模块中,可以通过globals()['__
阅读全文
摘要:基础配置 vim的配置是在用户主目录下的 ~/.vimrc 文件中完成的,如果没有的话,需要自己新建一下: 首先做些简单的配置: 为py文件添加下支持pep8风格的配置: 分割窗口 vim在编辑的时候就可以打开多个文件: :vs 或者 :vsplit 将当前窗口竖直分割,并在上面新窗口中显示当前文件
阅读全文
摘要:eval(expression[, globals[, locals]]) eval()函数执行一个python表达式字符串并返回表达式执行后的结果: expression参数为一个表达式字符串,globals和locals为可选的参数,globals必须是一个字典对象,locals可为任意映射对象
阅读全文
摘要:同一台服务器上部署多个项目时,项目可能使用不同版本的django或者其它不同的python库,这种情况下可以使用virtualenv来创建独立的python运行环境,将不同项目的运行环境隔离出来。 virtualenv可以创建一个拥有自己安装目录的环境, 能够方便的管理python版本和管理pyth
阅读全文
摘要:django项目开发中遇到过一些问题,发送请求后服务器要进行一系列耗时非常长的操作,用户要等待很久的时间。可不可以立刻对用户返回响应,然后在后台运行那些操作呢? crontab定时任务很难达到这样的要求 ,异步任务是很好的解决方法,有一个使用python写的非常好用的异步任务工具Celery。 br
阅读全文
摘要:1、最简单的内置format函数:>>> format(1234567890,',')'1,234,567,890'2、正则表达式:import redef formatNum(num): num=str(num) pattern=r'(\d+)(\d{3})((,\d{3})*)' ...
阅读全文
摘要:Python中一般使用xlrd库来读取Excel文件,使用xlwt库来生成Excel文件,使用xlutils库复制和修改Excel文件。这三个库只支持到Excel2003。 python-excel主页地址:http://www.python-excel.org/ xlrd 地址:https://p
阅读全文
摘要:在HTTP中,Basic Authorization基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。在发送之前是以用户名追加一个冒号然后串接上口令,并将得出的结果字符串再用Base64算法编码。例如,提供的用户名是Aladdin、口令是op...
阅读全文
摘要:Python标准库中用来处理HTTP的模块是urllib2,不过其中的API太零碎了,requests是更简单更人性化的第三方库。 用pip下载: 或者git: 发送请求: GET方法 POST方法: 也可以使用其它方法: 也可以将请求方法放在参数中: 传递参数或上传文件: 1.如果要将参数放在ur
阅读全文
摘要:列表推导与生成器表达式当我们创建了一个列表的时候,就创建了一个可以迭代的对象:>>> squares=[n*n for n in range(3)]>>> for i in squares: print i 014这种创建列表的操作很常见,称为列表推导。但是像列表这样的迭代器,比如str、file等...
阅读全文
摘要:2.7之后python不再对optparse模块进行扩展,python标准库推荐使用argparse模块对命令行进行解析。1.example有一道面试题:编写一个脚本main.py,使用方式如下:main.py -uhttp://www.sohu.com-d 'a=1,b=2,c=3' -o /tm...
阅读全文
摘要:python中执行obj.attr时,将调用特殊方法obj.__getattribute__('attr'),该方法执行搜索来查找该属性,通常涉及检查特性、查找实例字典、查找类字典以及搜索基类。如果搜索过程失败,最终会尝试调用类的__getattr__()方法。如果这也失败,则抛出Attribute...
阅读全文
摘要:python内置的描述符python有些内置的描述符对象,property、staticmethod、classmethod,python实现如下:class Property(object): def __init__(self,getf,setf,delf,doc): sel...
阅读全文
摘要:Python 描述符是一种创建托管属性的方法。每当一个属性被查询时,一个动作就会发生。这个动作默认是get,set或者delete。不过,有时候某个应用可能会有更多的需求,需要你设计一些更复杂的动作。最好的解决方案就是编写一个执行符合需求的动作的函数,然后指定它在属性被访问时运行。一个具有这种功能的...
阅读全文
摘要:通常,访问类和实例属性的时候,将返回所存储的相关值,也就是直接和类(实例的)的__dict__打交道。若果要规范这些访问和设值方式的话,一种方法是数据描述符,另一种就是python内置的数据描述符协议函数Property()。property是一种特殊的值,访问它时会计算它的值。特性的原型函数是pr...
阅读全文
摘要:with语句支持在一个叫上下文管理器的对象的控制下执行一系列语句,语法大概如下:with context as var: statements其中的context必须是个上下文管理器,它实现了两个方法__enter__,__exit__。1.需求是怎么产生的在正常的管理各种系统资源(文件、锁定...
阅读全文
摘要:myfunc=wrapper(myfunc)是一种很常见的修改其它函数的方法。从python2.4开始,可以在定义myfunc的def语句之前写@wrapper。 这些封装函数就被称为装饰器Decorator,其主要用途是包装另一个函数或类。这种包装的首要目的是透明的修改或增强被包装对象的行为。 1
阅读全文
摘要:1.全局解释器锁定 Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁定)来互斥线程对共享资源的访问,暂时无法利用多处理器的优势。虽然python解释器可以“运行”多个线程,但在任意时刻,不管有多少的处理器,任何时候都总是只有一个线程在执行。对于I/O密集型任
阅读全文