Python 学习入门
文章平均质量分 93
Python 语言学习最好的导师是动手实践
阳光岛主
阳光、快乐、创新
展开
-
Python 学习入门(38)—— @functools模块
利用@functools对函数运行时间,进行计时代码示例:#!/usr/bin/env python# -*- coding: utf-8 -*-# blog.ithomer.netimport time, functoolsdef timeit(func): @functools.wraps(func) def __do__(*args, **kwargs):原创 2014-03-01 00:06:03 · 12273 阅读 · 1 评论 -
Python 学习入门(37)—— @classmethod函数
@classmethod : 类方法@staticmethod : 静态方法类方法和静态方法的调用一样,都是通过类就可以直接调用。区别:类方法,需要传入该类,定义类方法的时候要传一个默认的参数cls。静态方法则不用。示例:#!/usr/bin/env python# -*- coding: utf-8 -*-# blog.ithomer.netclass Test(object):原创 2014-02-21 23:33:05 · 11335 阅读 · 1 评论 -
Python 学习入门(36)—— @property属性
@property 可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/getter也是需要的假设定义了一个类:C,该类必须继承自object类,有一私有变量_xclass C: def __init__(self): self.__x=None 1.现在介绍第一种使用属性的方法: 在该类中定义三个函数,分别用作赋值、取值和删除变量(此处表达也许不原创 2014-02-15 01:01:00 · 31644 阅读 · 4 评论 -
Python 学习入门(35)—— 模块
模块概念和基本使用 python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题。模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用,除了系统默认的模块不需要导入外。导入直接使用如下语法: import 模块名称(不要.py后缀) 这样导入成功后,就可以在另外一个模块原创 2013-12-22 01:26:11 · 24414 阅读 · 7 评论 -
Python 学习入门(34)—— PyDev 调试
运行程序要运行 Python 源程序,有两种方法可供选择。下面以一段代码 example.py 为例介绍这两种运行方式。在 Pydev Package Explorer 中双击 example.py,选择 Run -> Run As -> Python Run。程序example.py 立即被运行,在控制台 Console 里显示出程序的执行结果。图 13. Python 程序及运行结果 在 Py原创 2013-12-22 00:12:37 · 20924 阅读 · 1 评论 -
Python 学习入门(33)—— 内置函数
python的内置函数可以直接调用,无需import。有很多 我在平时常用到的,int()将字符串或者小数转换成整数str()将其他类型转换是字符型len(X)返回X的长度。The argument may be a sequence (string, tuple or list) or a mapping (dictionary).print()输出type(X)返回X的数据类型open(f)打原创 2013-12-21 23:09:40 · 6051 阅读 · 0 评论 -
Python 学习入门(32)—— xrange/range
在Python中range和xrange是不同的,两者的区别是微妙的。为了简单起见,这里省略两个函数的可选参数start和step。range返回值和想象的一样:一个从0开始指定长度的连续整数序列。然而,xrange返回一个"xrange 对象",该对象非常类似于迭代器。如果你曾经研究过迭代器,则两者的区别就很明显。下面是个例子:range(1000000)xrange(1000000)range原创 2013-12-21 22:25:05 · 6061 阅读 · 0 评论 -
Python 学习入门(31)—— 序列化
Python内置marshal, cPickle等序列化库,但cPickle效率不太理想,marshal文档也说不保证版本兼容性。今天在列表中看到几个第三方库,故自己测试下:测试脚本:#!/usr/bin/env pythonimport sys, os, timeimport cPickleimport marshalimport shelveimport tnetstringim原创 2013-12-21 22:02:40 · 3878 阅读 · 0 评论 -
Python 学习入门(30)—— 多态
以前写过一篇文章讲了一下python中的多态,最后得出结论python不支持多态,随着对python理解得加深,对python中得多态又有了一些看法。首先python不支持多态,也不用支持多态,python是一种多态语言,崇尚鸭子类型。以下是维基百科中对鸭子类型得论述:在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类原创 2013-12-21 21:55:50 · 4697 阅读 · 0 评论 -
Python 学习入门(29)—— 消息队列
nakeMQ是一个跨平台的Python消息队列库。消息队列让不同主机间通信变得简单可靠。使用snakeMQ,只需要发送消息,剩下的事都交给snakeMQ处理。特色:纯python实现,跨平台自动重连接可靠发送--可配置的消息方式与消息超时方式持久化/临时 两种队列支持异步 -- poll()symmetrical -- 单个TCP连接可用于双工通讯多数据库支持 -- SQLite、MongoDB…原创 2013-12-21 19:18:23 · 14898 阅读 · 1 评论 -
使用PDB调试Python程序
本文讨论在没有方便的IDE工具可用的情况下,使用pdb调试python程序 源码例子例如,有模拟税收计算的程序: #!/usr/bin/python def debug_demo(val): if val print "level 1" print 0 elif val转载 2011-02-14 09:45:00 · 5057 阅读 · 0 评论 -
Django 搭建blog
Django+python+eclipse 快速搭建博客blog原创 2013-11-25 22:15:40 · 6767 阅读 · 1 评论 -
Django 介绍
Django,是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V,控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件原创 2013-11-22 00:06:07 · 5391 阅读 · 0 评论 -
Django 过滤器
django1.4 or laterhtml 页面从数据库中读出DateTimeField字段时,显示的时间格式和数据库中存放的格式不一致,比如数据库字段内容为2012-08-26 16:00:00,但是页面显示的却是Aug. 26, 2012, 4 p.m.为了页面和数据库中显示一致,需要在页面格式化时间,需要添加{{ dayrecord.p_time|date:"Y-m-d H:i:s" }}原创 2013-11-26 00:01:33 · 4732 阅读 · 2 评论 -
python网络编程学习初步
一、套接字套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象。它们允许程序接受并进行连接,如发送和接受数据。为了建立通信通道,网络通信的每个端点拥有一个套接字对象极为重要。套接字为BSD UNIX系统核心的一部分,而且他们也被许多其他类似UNIX的操作系统包括Linux所采纳。许多非BSD UNIX系统(如ms-dos,w转载 2010-10-27 14:38:00 · 6839 阅读 · 1 评论 -
Python学习——struct模块的pack、unpack示例
Python是一门非常简洁的语言,对于数据类型的表示,不像其他语言预定义了许多类型(如:在C#中,光整型就定义了8种),它只定义了六种基本类型:字符串,整数,浮点数,元组,列表,字典。通过这六种数据类型,我们可以完成大部分工作。但当Python需要通过网络与其他的平台进行交互的时候,必须考虑到将这些数据类型与其他平台或语言之间的类型进行互相转换问题。打个比方:C++写的客户端发送一个int型(4字节)变量的数据到Python写的服务器,Python接收到表示这个整数的4个字节数据,怎么解析成Python认识原创 2010-10-29 13:36:00 · 114535 阅读 · 11 评论 -
Python类继承简单实现
代码: #! /usr/bin/python# Filename: inherit.py# Author: yanggangclass SchoolMember: def __init__(self,name,age): self.name = name self.age = age print 'init SchoolMember原创 2010-10-27 17:04:00 · 19999 阅读 · 1 评论 -
Python-if-elif-else语句
条件语句1) if 语句例子:# 执行if语句内的程序a = input("a:")b = input("b:")if(a > b):print a, " > ", bNote:如果是在pydev+eclipse下,运行然后输入数字,打个回车就会出现“SyntaxError:unexpected EOF while parsing”,所以只能用raw_input来代替。原因是回车,编译器都多读一个/r,一般按回车后,shells 会输入“/n”,但因为Eclipse控制台输入的是“/r/n”,py原创 2010-12-09 15:40:00 · 161622 阅读 · 1 评论 -
Python自动单元测试实例
Python unittest模块的相关用法待测源码类:widget.py#!/usr/bin/env pythonclass Widget: def __init__(self, size = (40, 40)): self._size = size def getSize(self): return self._size def resize(self, width, height): if width原创 2010-10-27 17:45:00 · 10653 阅读 · 0 评论 -
python实现socket通讯(TCP)
Server: 1 import socket 2 3 address = ('127.0.0.1', 31500) 4 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # s = socket.socket() 5 s.bind(address) 6 s.listen(5) 7 8 ss, addr = s.accept() 9 print 'got c原创 2010-10-27 15:49:00 · 87622 阅读 · 2 评论 -
python实现socket通讯(UDP)
Server: 1 import socket 2 3 address = ('127.0.0.1', 31500) 4 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 5 s.bind(address) 6 7 while True: 8 data, addr = s.recvfrom(2048) 9 if not data: 10原创 2010-10-27 15:38:00 · 100251 阅读 · 2 评论 -
Python自动单元测试框架
<br />简介: 软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写代码感兴趣,而不喜欢文档编写和软件测试这类"没有创新"的工作。既然如此,为什么不让程序员在编写软件时自己加入一些用于测试的代码,使测试过程自动化呢?在软件工程中,这一技术称为自动单元测试,本文介绍在用Python开发软件时如何实现这一目标。<br /> <br />一、软件测试<br />大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活转载 2010-10-27 17:48:00 · 5798 阅读 · 0 评论 -
Python的ASCII, GB2312, Unicode , UTF-8区别
ASCII 是一种字符集,包括大小写的英文字母、数字、控制字符等,它用一个字节表示,范围是 0-127Unicode分为UTF-8和UTF-16。UTF-8变长度的,最多 6 个字节,小于 127 的字符用一个字节表示,与 ASCII 字符集的结果一样,ASCII 编码下的英语文本不需要修改就可以当作 UTF-8 编码进行处理。Python 从 2.2 开始支持 Unicode ,函数 decode( char_set )可以实现 其它编码到 Unicode 的转换,函数 encode( char_set转载 2010-12-21 20:18:00 · 6719 阅读 · 0 评论 -
Python 学习入门(28)—— 服务器实例
在Python 3.x中,BaseHTTPServer, SimpleHTTPServer, CGIHTTPServer整合到http.server包,SocketServer改名为socketserver,请注意查阅官方文档。在上一篇文章中(用socket写一个Python服务器),我们在不依赖框架和CGI的情况下,仅使用socket接口,完成了一个可以处理HTTP请求的Python服务器。基于原创 2013-12-17 00:01:32 · 8401 阅读 · 5 评论 -
Python 学习入门(27)—— 服务器
有人说表示只学Python没有用,必须学会一个框架(比如Django和web.py)才能找到工作。而我的想法是,掌握一个类似于框架的高级工具是有用的,但是基础的东西可以让你永远不被淘汰。不要被工具限制了自己的发展。今天,我在这里想要展示的,就是不使用框架,甚至不使用Python标准库中的高级包,只使用标准库中的socket接口(我不是很明白套接字这个翻译,所以使用socket的英文名字),写一个P原创 2013-12-15 00:25:10 · 7986 阅读 · 6 评论 -
Python 学习入门(26)—— 装饰器
装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包中,我们见到函数对象作为某一个函数的返回结果。相对于其它方式,装饰器语法简单,代码可读性高。因此,装饰器在Python项目中有广泛的应用。装饰器最早在Python 2.5中出现,它最初被用于加工函数和方法这样的可调用对象(cal原创 2013-12-14 00:09:14 · 11257 阅读 · 8 评论 -
Python 学习入门(25)—— 闭包
闭包(closure)是函数式编程的重要的语法结构。函数式编程是一种编程范式 (而面向过程编程和面向对象编程也都是编程范式)。在面向过程编程中,我们见到过函数(function);在面向对象编程中,我们见过对象(object)。函数和对象的根本目的是以某种逻辑方式组织代码,并提高代码的可重复使用性(reusability)。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。不同的语言实现原创 2013-12-13 22:28:35 · 7690 阅读 · 4 评论 -
Python 学习入门(24)—— 进程高级
初步了解Python多进程之后,我们可以继续探索multiprocessing包中更加高级的工具。这些工具可以让我们更加便利地实现多进程。 1. 进程池之前我们使用Process创建进程的时候,每次创建一个进程。进程池 (Process Pool) 创建多个进程。这些进程就像是随时待命的士兵,准备执行任务(程序)。一个进程池中可以容纳多个待命的士兵。比如下面的程序:import multiproc原创 2013-12-13 19:05:38 · 6283 阅读 · 3 评论 -
Python 学习入门(23)—— 进程
本文介绍Python的os包中有查询和修改进程信息的函数,Python的这些工具符合Linux系统的相关概念,所以可以帮助理解Linux体系。 1. 进程信息os包中相关函数如下:uname() 返回操作系统相关信息,类似于Linux上的uname命令。umask() 设置该进程创建文件时的权限mask,类似于Linux上的umask命令。get*() 查询 (*由以下代替) uid, eu原创 2013-12-11 00:06:05 · 6241 阅读 · 1 评论 -
Python 学习入门(22)—— 线程同步
Python主要通过标准库中的threading包来实现多线程。在当今网络时代,每个服务器都会接收到大量的请求。服务器可以利用多线程的方式来处理这些请求,以提高对网络端口的读写效率。Python是一种网络服务器的后台工作语言 (比如豆瓣网),所以多线程也就很自然被Python语言支持。(关于多线程的原理和C实现方法,请参考我之前写的Linux多线程与同步,要了解race condition, mu原创 2013-12-10 23:16:07 · 4098 阅读 · 2 评论 -
Python 学习入门(21)—— 线程
Python线程指南原创 2013-12-10 22:42:30 · 4374 阅读 · 1 评论 -
Python 学习入门(20)—— 循环
1. for 循环for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n次。基本构造是for 元素 in 序列: statement举例来说,我们编辑一个叫forDemo.py的文件for a in [3,4.4,'life']: print a这个循环就是每次从表[3,4.4,'life'] 中取出一个元素(回忆:表是一种序列),然后将这个元素赋值给a,之后执行原创 2013-12-10 22:09:18 · 14138 阅读 · 1 评论 -
Python 学习入门(19)—— 异常
在项目开发中,异常处理是不可或缺的。异常处理帮助人们debug,通过更加丰富的信息,让人们更容易找到bug的所在。异常处理还可以提高程序的容错性。我们之前在讲循环对象的时候,曾提到一个StopIteration的异常,该异常是在循环对象穷尽所有元素时的报错。我们以它为例,来说明基本的异常处理。一个包含异常的程序:re = iter(range(5))for i in range(100):原创 2013-12-06 23:52:24 · 4947 阅读 · 1 评论 -
Python 学习入门(18)—— 字符串
Python判断字符串只包含数字一种方法是 a.isdigit(),但这种方法对于包含正负号的数字字符串无效,更为准确的为:#!/usr/bin/python# -*- coding:utf-8 -*-## http://blog.ithomer.netimport sysimport math# 判断是否为数字def isNum(value): try:原创 2013-12-06 19:21:28 · 12623 阅读 · 0 评论 -
Python 学习入门(17)—— args, kwargs
The special syntax, *args and **kwargs in function definitions is used to pass a variable number of arguments to a function. The single asterisk form (*args) is used to pass a non-keyworded, variable-原创 2013-12-05 23:32:34 · 5731 阅读 · 0 评论 -
Python 学习入门(16)—— zipfile
zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的,在这里对zipfile的使用方法做一些记录。即方便自己也方便别人。zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了。ZipFile是主要的类,用来创建和读取zip文件而ZipI原创 2013-12-05 22:14:32 · 19211 阅读 · 1 评论 -
Python 学习入门(14)—— logging
一、从一个使用场景开始 开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件 Python代码 import logging # 创建一个logger logger = logging.getLogger('mylogger') logger.setLevel(logging.DEBUG) # 创建一个handler,用于写入日志文件 fh = logging.Fil原创 2013-11-30 08:18:47 · 7459 阅读 · 1 评论 -
Python 学习入门(13)—— 正则表达式
Python正则表达式指南原创 2013-11-29 23:07:57 · 14092 阅读 · 2 评论 -
Python 学习入门(12)—— 文件
python进行文件读写的函数是open或filefile_handler = open(filename,,mode)Table mode模式描述r以读方式打开文件,可读取文件信息。w以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容a以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建r+以读写方式打开文件,可对文件进行读和写操作。w+消原创 2013-11-28 23:50:23 · 5283 阅读 · 0 评论 -
Python 学习入门(11)—— 排序
Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。到底有多少种方法可以实现对dictionary的内容进行排序输出呢?下面摘取了 一些精彩的解决办法。 示例:#/usr/bin/python## it-homer in 2013def te原创 2013-11-21 23:15:32 · 4616 阅读 · 0 评论