也是右键属性,这里就不在说了
#!/usr/bin/env python
#coding:utf-8
def login(username):
if username == "alex":
print "登录成功"
else:
print "登录失败"
if __name__ == "__main__":
user = raw_input('username:')
login(user)
print range(10)
for item in xrange(10):
print item
#输出的时候并没有全部创建,他只是一个生成器,说明他没有写入内存中
#也就是说每一次创建就只创建一个整数
def foo():
yield 1
re = foo()
print re
输出:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0
1
2
3
4
5
6
7
8
9
0x00000000030B8480>
def fool():
yield 1
yield 2
yield 3
yield 4
#他的执行过程是,第一从从yield 1 执行,下一次直接从yield2开始执行
re = fool()
print re
#生成了一个生成器,每次遍历只生成一条
for item in re :
print item
结果:
0x0000000003248480>
1
2
3
4
def ReadLines():
seek = 0
while True:
with open('E:/temp.txt','r') as f :
f.seek(seek)
date = f.readline()
if date:
seek = f.tell()
yield date
else:
return
print ReadLines()
for item in ReadLines():
print item
for k,v in enumerate([1,2,3,4]):
print k,v
输出:
0 1
1 2
2 3
3 4
#为程序增加一个序号
li = ['手表','汽车','房']
for item in enumerate(li,1):
print item[0],item[1]
#1为初始值
1 手表
2 汽车
3 房
lala = [];
def foo(arg):
return arg + 100
li = [11,22,33]
lala = map(foo,li)
print lala
结果:
[111, 122, 133]
#也可以使用 lala.append(item+100)
temp = map (lambda arg:arg+100,li)
temp = []
li = [11,22,33]
def foo(arg):
if arg <22:
return True
else:
return False
temp = filter(foo,li)
print temp
将li序列中满足条件的返回temp序列中
结果:11
print reduce(lambda x,y:x+y,[1,2,3] )
结果 6
将前一次的计算结果,传递为第二次计算的第一个参数
a ='8*8'
print eval(a)
结果:64
s = ‘i am {0},{1}’
print s.format(‘alex’,’xxx’)
i am alex,xxx
不允许使用import os 导入,用temp的方法导入
temp = 'os'
model = __import__(temp)
print model
print model.path
输出:
<module 'os' from 'D:\pycharm\lib\os.pyc'>
<module 'ntpath' from 'D:\pycharm\lib\ntpath.pyc'>
getattr就是在mysqlhelper模块中查找count函数
Function就等于调用的count函数
相应的有delattr()、hasattr()判断函数中是否含有相应的模块
它使用的是ascall的值进行生成的
import random
print random.random()
print random.randint(1,5)
#生成1-5之间的随机整数
print random.randrange(1,3)
#生成大于等于1,小于3的随机数
import random
code = []
for i in range(6):
if i == random.randint(1,5):
code.append(str(random.randint(1,5)))
else:
temp = random.randint(65,90)
code.append(chr(temp))
print ''.join(code)
join效率更高,+=每次都要在内存中请求一块空间,join只申请一次
#!/usr/bin/env python
#coding:utf-8
import hashlib
hash=hashlib.md5()
hash.update('admin')
print hash.hexdigest()
print hash.digest()
21232f297a57a5a743894a0e4a801fc3
!#/)zW��C�JJ�¬�
#md5不能反解
应用实例:(python 和python之间传输文件,单机游戏实时保存)
一个程序将列表存在一个程序中,另一个程序使用这个文件的时候。使用序列化之后在让另一个程序去读取的话,使两个python程序之间内存数据之间的交换,两个独立的进程在内存中看,他们的内存空间不能互相访问,如果两个程序之间不仅仅只是简单的列表共享,还想其他数据交换,数据可能比较复杂。而且硬盘只能存字符串类型的数据,只能通过系列化,存入文件,另一个程序然后读取文件的内容,然后将其反序列化之后,在加载到内存中
序列化:把一个对象或(一个列表、字典),把对象通过Python特有的机制序列化,序列化就是以特殊的形式以过二进制的方式给对象加密,并且序列化之后可以反序列化。
序列化
import pickle
li = ['axex',11,22,'ok','sb']
print pickle.dumps(li)
print type(pickle.dumps(li))
输出结果:
(lp0
S'axex'
p1
aI11
aI22
aS'ok'
p2
aS'sb'
p3
a.
'str'>
#是一个没有规则的字符串类型
反序列化
import pickle
li = ['axex',11,22,'ok','sb']
dumpsed = pickle.dumps(li)
print type(dumpsed)
loadsed = pickle.loads(dumpsed)
print loadsed
print type(loadsed)
<type 'str'>
['axex', 11, 22, 'ok', 'sb']
<type 'list'>
将列表序列化到一个文件中
import pickle
li = ['axex',11,22,'ok','sb']
pickle.dump(li,open('E:/temp.pk','w'))
result = pickle.load(open('E:/temp.pk','r'))
#将文件中反序列化
JSON:一种标准化的数据格式,把不同格式的数据JSON化。
import json
name_dic = {'name':'wupeiqi','age':23}
print json.dumps(name_dic)
输出结果:全部变成字符串
{"age": 23, "name": "wupeiqi"}