2013年4月25日
摘要: 1.PyMethodDef结构体源码(Include/methodobject.h):typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);struct PyMethodDef { const char *ml_name; /* The name of the built-in function/method */ PyCFunction ml_meth; /* The C function that implements it */ int ml_flags; /* Combinat... 阅读全文
posted @ 2013-04-25 14:38 101010 阅读(3347) 评论(0) 推荐(0) 编辑
摘要: 详细内容见:http://docs.python.org/3/library/socket.html1.属性AF_UNIX,AF_INET,AF_INET6SOCK_STREAM,SOCK_DGRAM2.异常errorherrorgaierrortimeout3.函数socket()socketpair()fromfd()4.数据属性ssl()getaddrinfo()getnameinfo()getfqdn()gethostname()gethostbyname()gethostbyname_ex()gethostbyaddr()getprotobyname()getservbyname() 阅读全文
posted @ 2013-04-25 01:04 101010 阅读(309) 评论(0) 推荐(0) 编辑
  2013年4月24日
摘要: 执行UDP连接的方式与TCP大致相同,不同之处在于客户端和服务器端之间不建立“连接”:1.创建UDP服务器# filename:udpServer.pyfrom socket import *from time import ctimeHOST = '' # HOST为空与INADDR_ANY含义相同,表示任何地址PORT = 21567 # 端口号21567BUFSIZE = 1024 # 缓冲区的大小为1KADDR = (HOST, PORT) ... 阅读全文
posted @ 2013-04-24 22:14 101010 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 建立TCP连接的过程在服务器端和客户端的一系列步骤:在TCP服务器中,用来接收连接的套接字对象与用来执行客户端后续通信的套接字对象是不同的。具体来说,accept()调用返回实际用来连接的新套接字对象。这样以来,服务器就可以同时管理大量的客户端连接。1.创建TCP服务器# filename:tcpServer.pyfrom socket import *from time import ctimeHOST = '' # HOST为空与INADDR_ANY含义相同,表示任何地址PORT = 21567 ... 阅读全文
posted @ 2013-04-24 22:01 101010 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 1.str ==> bytes>>> s = 'abc'>>> s.encode() # 可以是s.encode('utf8')或者s.encode('ascii')b'abc'>>> bytes(s, encoding='utf8')b'abc'2.bytes ==> str>>> b = b'abc'>>> b.decode()'abc'>>> 阅读全文
posted @ 2013-04-24 21:08 101010 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 地址:http://www.zhimaq.com/questions/2981/python有等长的字符串,可能很长a = "ABCD"b = "abcd"要求输出是类似于这样的c = "AaBbCcDd">>> a = 'ABCD'>>> b = 'abcd'>>> ''.join(map(''.join, zip(a, b)))'AaBbCcDd'>>> ''.jo 阅读全文
posted @ 2013-04-24 16:44 101010 阅读(325) 评论(0) 推荐(0) 编辑
摘要: Python有两个内置的函数:locals()和globals(),它们提供了基于字典的访问局部和全局变量的方式。Python使用叫做名字空间的东西来记录变量的轨迹。名字空间只是一个字典,它的键字就是变量名,字典的值就是那些变量的值。实际上,名字空间可以象Python的字典一样进行访问。在一个Python程序中的任何一个地方,都存在几个可用的名字空间。每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定义的变量。每个模块拥有它自已的名字空间,叫做全局名字空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。还有就是内置名字空间,任何模 阅读全文
posted @ 2013-04-24 11:49 101010 阅读(1123) 评论(0) 推荐(0) 编辑
  2013年4月23日
摘要: 1.使用socket模块中socket()函数创建套接字:socket()函数返回一个socket对象,该对象的方法实现了各种socket系统调用。语法:import socketsocket.socket([family[,type[,proto]]])使用给定的address family, socket type和protocol number创建一个新的socket对象。The address family(地址家族):AF_INET(默认),AF_INET6,AF_UNIX,AF_CAN或者AF_RDS。The socket type(套接字类型):SOCK_STREAM(默认),S 阅读全文
posted @ 2013-04-23 16:35 101010 阅读(483) 评论(0) 推荐(1) 编辑
摘要: 1.什么是套接字一开始,套接字被设计用在一台主机上的多个应用程序之间的通信,也被称为进程间通信(IPC)。套接字有两种:基于文件的和基于网络的。2.套接字家族(1)基于文件:家族名:AF_UNIX(在POSIX1.g标准中,也叫AF_LOCAL),表示“地址家族(缩写AP,老系统也叫协议家族即PF):UNIX”(2)基于网络:家族名:AF_INET,表示“地址家族(AF):Internet”另一种地址家族AF_INET6用于IPv6(3)Python2.5中加入了一种Linux套接字的支持:AF_NETLINK让用户代码与内核代码之间的IPC可以使用标准BSD套接字接口。以上3中地址家族中,基 阅读全文
posted @ 2013-04-23 16:20 101010 阅读(312) 评论(0) 推荐(0) 编辑
  2013年4月22日
摘要: 压缩算法描述如下:例如:a{ABBCCCDDDD}压缩后成为a{1A2B3C4D}>>> from collections import Counter>>> ''.join([ '%s%s'%i[::-1] for i in sorted(Counter(list("ABBCCCDDDD")).items())])'1A2B3C4D'>>> sorted(Counter(list("ABBCCCDDDD")).items())[('A' 阅读全文
posted @ 2013-04-22 22:09 101010 阅读(935) 评论(0) 推荐(0) 编辑