Python2.7
缩进统一;
约定 常量 大写 , 变量 小写
判断一个变量在内存中的地址,也能看出是不是一个值 id()函数
>>> x = 'abc' >>> y = x >>> x = 'def' >>> >>> id(x) 21306656 >>> id(y) 6214752l
良好的编程风格,我们在命名多个单词的变量时 可以是 task_detail taskDetail TaskDetail 都行,但要保持一致.
True False
type()函数,判断数据的类型
>>> type('abc') <class 'str'> >>> type(123) <class 'int'>
用户交互 input() raw_input()
row_input() ,无论输入什么都当字符串处理;
input(), 自动转成输入值的类型,原生格式是什么类型就当什么类型处理,如果是变量就在程序中找这个变量
#!/usr/bin/env python #_*_ coding:utf-8 _*_ # 下面代码在Python2.7和Python3.5中都没有运行起来 # 其中Python3.5是不支持 raw_input # 其中Python2.7是不打印结果 name = raw_input("Please input your name:") age = input("age:") # 这里使用 input,为了看不同的效果 job = raw_input("job:") # 采用格式化形式输出 '''除了作多行注释,还有格式化输出的功能 # %s表示字符串 %d表示整数 %f 表示浮点数 print ''' Information of %s is: Name: %s Age : %s Job : %s ''' % (name,name,age,job)
在Python中存在 while else、 for else的语法
count = 0 while count<10000000: count +=1 else: print('loop',count)
IO 文件操作
strip()去掉字符串中的指定的前后字符 ,不指定就会去掉前后空白
# python2.7的语法使用 file() #python 3.5语法是使用 open() # r以只读方式打开文件、w以只写方式打开文件、a以追加方式打开文件 f1 = file('path','r') f2 = file('path','w') f3 = file('path','a') # 读一行 f1.readline() #循环按行读 for line in f1.readlines(): line = line.strip('\n').split[':'] #去掉换行符,再使用冒号分割 print line # 写文件 f2.write("new line") #write()不会立刻写到硬盘而是在缓冲区中,可以使用flush()强制写入 f2.flush() #追加方式写入文件,也是直接使用 write()函数写入 #关闭文件 f1.close() f2.close()f3.close() ------------------------------------------------------------------------------readline()是通过next()实现的,next读到最后会报 StopIteratorErrorreadlines()是读到列表中read()是一次性读出来,结果是字符串形式 seek(0) 跳到文件开头tell() 当前的文件指针位置 更多可以参考之前我学习的 小甲鱼笔记 http://www.cnblogs.com/yangw/p/4964729.html 以二进制方式读 我们可以使用 file('path','rb') seek() tell()的使用场景 【在分析特别大的日志文件时,每隔10分钟分析一次,只需要分析新增加的内容 用这个就特别方便】
__init__.py 至关重要,区分文件夹和包的标志
__name__ 判断是否为主文件 if __name__=='__main__'
__file__ ,当前文件的路径
__doc__ 当前文件的描述
函数参数的可变性 当传递的参数用一个 * 标识时,会封装成列表进行处理,当传递的参数用两个*标识时,会封装成字典的形式进行处理
with打开文件
一旦一个函数中有 yield,它就是生成器 , yield相当于return,函数遇到yield就会返回yield后面的值,函数处于暂停状态;
生成器要想继续执行,必须使用迭代.
应用场景 写多线程时可以作为线程池
三元运算 result= 'a' if x>y else 'b'
匿名函数 lambda , 只能调用一次
一些常用的内置函数
help()
dir() 以列表的形式列出当前模块中的各个对象
vars()以字典的形式列出当前模块中的各个对象
type()
id()
-----------------------------------------------
cmp(a,b) 比较
abs(-9) 绝对值
bool() 返回bool值
divmod(9,4) 返回商和余数 #(2,1)
-----------------------------------------------
max() #print(max([11,45,23,76,1]))
min()
sum()
pow(2,10) # 1024
-----------------------------------------------
len() #print(len('中国')) 6
all() #所有的是真才是真 all([1,4,6,0]) False
any() #有一个为真就是真 any([0,0,0,1]) True
-----------------------------------------------
print(chr(65)) # A
print(ord('a')) #97
print(hex(2)) #0x2
print(bin(2)) #0b10
print(oct(2)) #02
-----------------------------------------------
s = "I'm {0},go shopping,{1}"
print(s.format('yangw','today')) # I'm yangw,go shopping,today
enumerate()函数
map() ,原来列表中有几个值还是返回几个值
filter(), 只返回函数返回真的值
reduce(),可以用来累计求和求积
zip()
eval()
反射: 通过字符串的形式导入模块,并以字符串的形式执行函数
__import__(str)
***反射详解二:***
随机数模块 random
random 随机数生成的模块
下面是生成验证码的例子
Md5的生成方式
序列化: 应用在Python与Python之间文件传输时.实现了两个Python程序之间内存数据的交换
pickle方式的序列化,它是Python独有的,除了常规数据类型能序列化,其它的类,对象也能被序列化
pickle 序列化到文件中
JSON序列化: 只能序列化常规类型,其它语言也是支持json格式数据的
json序列化的用法与pickle完全一样,方法名都是一样,不过就是 import json
正则表达式 re
time()模块
时间的三种表达形式 时间戳形式 time.time() 以元组形式显示 time.gmtime() 以格式化字符串形式显示 time. strftime()
http://www.runoob.com/python/python-date-time.html
时间格式之间可以转化,其中 元组形式的是桥梁