Python知识总结

门禁项目结束,Python的学习和使用告一段落。签了一家上市公司,现在转战CRM系统.....

可爱的Python,可爱的Linux,我会时常想你们的,回来看看你们。

 

Python的自省功能:

python的自省功能强大:自省是指代码可以查看内存中以对象形式存在的其它模块和函数,获取它们的信息,并对它们进行操作

python中不存在接口

python中不存在“基类”的概念,也没有单根,更没有基本类型,所有的一切都是对象。

python中所有的类,都是抽象类,或者说根本不存在抽象类,类方法可以直接使用,“类”本身在定义的时候就已经实例化,你可以通过输入:某类[回车]看到其内存句柄。这是符合事实的,并且时简约明了的。

 

 

Python的转换:

 

把十六进制的字串转为十进制數字:

>>> print int('ff', 16)

255

 

把十进制數字转换为以十六进制表示之字串,可调用內置的hex()函数:

>>> print hex(255) 

 

 

链表转为字符串

t=['a', 'b', 'c']

str(t)

repr(t)

import string

string.join(t)

 

 

 

哈哈,终于解决,相关代码:

import binascii

senddata= binascii.a2b_hex ("eb90eb90eb90aa55aa55")

mysock.send(senddata)

 

 

十六进制编码和字符串互相转换

>>> s='/x16/xa1'

>>> s.encode('hex')

'16a1'

>>> t = s.encode('hex')

>>> print t

16a1

>>> print s

>>> type(t)

<type 'str'>

>>> s='01020304'

>>> s=s.decode('hex')

>>> print s

 

项目中发送的底层数据流中只要含有10即替换为1010,算法实现如下:

#替换有效的10为1010

def x(st):

  cnt = 0

  while cnt < len(st):

    yield st[cnt:cnt+2]

    cnt += 2

 

s='10100010010101'

for p in x(s):

  print p

str = ''.join(['1010' if item == '10' else item for item in x(s)])

print str

 

字符串左补空格和右补空格

>>> slen = "%04d" %ilen

>>> print slen

0008

>>> slen = "%-04d" %ilen

>>> print slen

8

 

new一个时间

import time

from datetime import datetime

datetime(year,month,day,hour,minute,second)

 

 

 

Tcp/IP协议:

 

socket利用Tcp协议,接受到的数据为已经去掉tcp包头和包尾的数据

tcp协议可以保证不会丢数据,不会乱序,不会丢包

tcp可以设置超时时间:

 

 

#启用KeepAlive选项

self.transport.setTcpKeepAlive(1)

#TCP_KEEPIDLE: 开始首次KeepAlive探测前的TCP空闭时间

 self.transport.socket._sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 60)

 #TCP_KEEPINTVL:两次KeepAlive探测间的时间间隔

 self.transport.socket.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 10)

 #TCP_KEEPCNT:判定断开前的KeepAlive探测次数 

 self.transport.socket.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 3)

 

文本准换为十六进制:

 

#例如有十六进制串:0x690x730x730x69

#十六进制->String类型

HexStr="0x690x730x730x69"

fullstring=''

word=HexStr.split("0x")

for i in word:

  if i.strip()!="":

    a=int(i,16)

    fullstring=fullstring+chr(a)

print fullstring

 

 

打印异常信息:

 

import traceback  

print traceback.format_exc() 

 

 

读写文件:

poem='aabbccddeeff'

 

f = file('poem.log', 'a')

f.write(poem) 

f.close() 

 

 

 

获取当前时间

>>> import datetime 

>>> print datetime.datetime.now()

构造一个时间

date = datetime(2011,01,03,12,12,12)

 

 

 

 

字典(Dictionary)是一种映射结构的数据类型,由无序的“键-值对”组成。字典的键必须是不可改变的类型,如:字符串,数字,tuple;值可以为任何python数据类型。

 

 

1、新建字典

>>> dict1={}      #建立一个空字典

>>> type(dict1)

<type 'dict'>

 

2、增加字典元素:两种方法

>>> dict1['a']=1    #第一种

>>> dict1

{'a': 1}

#第二种:setdefault方法

>>> dict1.setdefault('b',2)

2

>>> dict1

{'a': 1, 'b': 2}

 

3、删除字典

#删除指定键-值对

>>> dict1

{'a': 1, 'b': 2}

>>> del dict1['a']      #也可以用pop方法,dict1.pop('a')

>>> dict1

{'b': 2}

#清空字典

>>> dict1.clear()

>>> dict1         #字典变为空了

{}

#删除字典对象

>>> del dict1

>>> dict1

Traceback (most recent call last):

  File "<interactive input>", line 1, in <module>

NameError: name 'dict1' is not defined

 

4、字典的方法

1)get(key,default=None)   

返回键值key对应的值;如果key没有在字典里,则返回default参数的值,默认为None

 

>>> dict1         #空的字典

{}

>>> dict1.get('a')   #键‘a’在dict1中不存在,返回none

>>> dict1.get('d1','no1')   #default参数给出值'no1',所以返回'no1'

'no1'

>>> dict1['a']='no1'      #插入一个新元素

>>> dict1

{'a': '1111'}

>>> dict1.get('a')      #现在键'a'存在,返回其值

'1111'

 

2)clear

清空字典

 

3)has_key(key)

如果key出现在dict里则返回True;否则返回False

>>> dict1

{'a': '1111'}

>>> dict1.has_key('b')

False

>>> dict1.has_key('a')

True

 

4)items

返回dict的(键,值)tuple对的一个列表

>>> dict1

{'a': 'no1', 'b': '2222'}

>>> dict1.items()

[('a', 'no1'), ('b', '2222')]

 

5)keys   返回dict的键列表

6)values 返回dict的值列表

>>> dict1

{'a': 'no1', 'b': '2222'}

>>> dict1.keys()

['a', 'b']

>>> dict1.values()

['no1', '2222']

 

7)setdefault(key,default=None)

如果dict中有key,则返回key值,如果没有找到key,则在dict中加上该key,值由default参数给出,默认None

 

8)update(dict2)

把dict2的元素加入到dict中去,键字重复时会覆盖dict中的键值

>>> dict2

{'c': '3333', 'b': 'no2'}

>>> dict1                  #dict2和dict1的键‘b'重复

{'a': 'no1', 'b': '2222'}

>>> dict1.update(dict2)     #调用update后,dict1的键'b'值被覆盖了

>>> dict1

{'a': 'no1', 'c': '3333', 'b': 'no2'}

 

9)popitem

删除任意键-值对,并返回该键-值对,如字典为空,则产生异常

>>> dict1

{'b': 'no2'}

>>> dict1.popitem()

('b', 'no2')

>>> dict1

{}

>>> dict1.popitem()

Traceback (most recent call last):

  File "<interactive input>", line 1, in <module>

KeyError: 'popitem(): dictionary is empty'

 

10)pop(key,[d])

删除指定键字的键-值对,并返回该键对应的值   #第二个参数不知道怎么用

>>> dict1

{'a': 'no1', 'c': '3333', 'b': 'no2'}

>>> dict1.pop('a')

'no1'

>>> dict1

{'c': '3333', 'b': 'no2'}

 

11)copy

返回字典的一个浅拷贝

 

#以下方法目前还不知道怎么用

12)fromkeys

13)iteritems

14)iterkeys

15)itervalues

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值