web服务器编程,数据挖掘,自然语言处理,自动化测试等等
优美、清晰、简单是python一直强调的哲学理念。
python语言的开放性赋予了其强大的生命,这与linux相同。
python是一门面向对象的语言,模块,变量,函数都看作是对象。
python有很好的跨平台性,也可以很容易和多种编程语言衔接,所以我们也称python为胶水语言。
python简单的特点,被用作学习的第一种编程语言很合适,性价比较高。
数字(int/float),字符串(string),列表(list),字典(dict),元祖(tuple),集合(set),文件。
其他类型:类类型(object)None(Nonetype) 布尔型(Boolean)
变成单元模块类型:函数(function)、模块(module)、类(class)
1) 以单一双线开头的变量名(_x) 不会被from module inport *语句导入
3) 前面两个下划线开头的变量(__x)为类的私有变量
python属于弱类型变量:对象有类型变量无类型,变量就相当于一个对象的标签
python中变量和常量分开存放,当把变量重新赋值的时候即变量存放的地址发生了改变。不用的常量仍然在内存中,有自动的垃圾处理机制,如果没有变量绑定这个常量则自动会处理也可以通过del来处理,全局变量也随进程消亡。
1) a,b = b,a 2) a ^= b,b ^= a,a ^= b (只对整数有效) 3) temp = a,a = b,b = temp
左移 a >> 2 表示在最右边加上两个零 相当于乘4
右移 a << 2 表示删除最有边两位数 相当于除于4取整
a & b & 与 两个数2进制进行比较 只要有一个数是1就取1
a | b | 或 两个数2进制进行比较 只要有一个数是0就取0
a ^ b ^ 异或 两个数2进制进行比较 相同取0 不同取1
~a ~ 取反 一个数的二进制数 取反 如:~14 15
== != or and not is:判断两个对象是否为同一个对象 isnot in notin 支持连逻辑运算:a>b>c +=等
dir(math) 查看math()包含的参数 dir 通用
math.trunc(a) 如果a是小数,省去小数部分
math.floor(a) 对a向下求整,值小于或等于a
math.ceil(a) 对a向上求证,值大于或等于a
math.pi pi 常量等于3.1415926....
math.log(x[,base]) 对数运算(幂次方),默认基地为e的对数运算。如:math.(8,2) 3.0
random.chice(数据类型) 在这个数据类型中随机挑选一个
random.randint(a,b) 生成随机数n a <= n <= b
int(1.22) 将float转换成整型,省去小数部分 int('123') 将字符串转换成整型
`123` '123' 强转成字符串 python3中没有反单引号这个强转
字符串:零个或多个字符组成的有限串行 必须用引号引起来,不区分单双引号 是一种容器数据类型,它是由多个字符组成的,不可变数据类型
a.find('e') 查找第一个e的下标 找到返回索引值 找不到返回-1
s=' '.join(a) s = 等于以空格为拼接的a
一般形式为x[i:j:z] 表示:取出在x中从索引值为i,直到但不包括索引值为j的内容,z表示步长 表示每z个去一个值
a[::-1] 'dsadsa' 逆向取值 每一个取一个
a[::-2] 'das' 逆向取值 每两个取一个
a[2::-2] 'da' 在2前边的每两个取一个
a = 'z' + a[1:] :表示把z代替第一个数
a = 'z' + a[2:] :表示把z代替前两个数
a * 2 'asdasdasdasd' 把整个字符串×2
raw_input(): 无论输入什么类型 都当成字符串处理并返回 可以在前面直接加强转 如int(raw_input)
python3中没有了raw_input 只有input 作用和raw_input一样
pirnt 在python2中 两个输出之间加都好不换行 不同字符串之间加逗号不换行
python3中 输出要用括号括起来 换行用end=""
格式化输出:
%g:如果指数大于-4或者小于精度值则和e相同,其他情况和f相同
%G:如果指数大于-4或者小于精度值则和e相同,其他情况和F相同
如:print "the lenght is %s hello "%变量 print "the lenght is %s %s hello "%(变量,变量) 传给两个数 打印一个% 用%% 输出一个%
2.转换标志:- 表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示整数之前保留空格;0表示转换值若位数不够则用0填充
3.最小字段值:转换后的字符串至少应该具有该值指定的宽度。如果×,则宽度会从值组中读出
4.点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。print "this is %5.2f"%a 表示小数点后占两位 四舍五入
‘’‘ 文档的解释 ’‘’ 多行注释的作用 不是多行注释 对文档解释作用
列表:表示一种容器类型,有序的,可以是混合的 序列从0开始 是可变数据类型 支持切片操作 []中括号是列表
l = [1,5,‘hello’,[4,8,6]] 定义一个列表
l.append('a') 向列表的末端加入a append : 附加
l.extend([5,6]) 合并两个列表 extend: 扩展
l.insert(3,2) 在下标为3的位置插入2 insert: 插入
l.index(5) 显示5的下标 1 index: 指标 做索引
l.count(2) 显示2的个数 count: 数
l.sort() 排序 默认从小到大排序 sort : 排序
l.reverse() 反转 reverse: 反转
是一种容器类型,是任意对象的有序集合,通过索引访问 不可变类型 可以分片 ()小括号是元祖
zip(t1,t) :形成一个元祖 如果t,t1都是 列表 那么生成生成一个大的列表其中包含几个元祖
特点:1.可以通过索引来抓取特定的项目 2.可以切片
max(x) :返回最大值 返回x中最大的值 min(x):返回最小值 返回x中最小的值 '*': 重复 str*5 str 重复5次
cmp(x,y):比较2个序列值是否相等。字母的字符串长于数字的字符串1表示前面长于后面 -1表示后面长于前面 0表示相等
字典:通过键值对来实现元素的存取,是一种无序的集合,容器可变,可改变的 大括号{}没有运算 键:可以是数字或字符串,值什么类型都可以 内部查找是:散列查找 d = {‘a’:1,'b':2,'c':3}
d.items() 列出所有的键和值 每一对形成一个元祖
d.pop(key) 弹出某一个 字典中弹出的一个消失
a = dict(zip(x,y)) 两个元祖x,y或者其他转换成字典
集合 无序排列,可包含不同数据类型 支持成员关系测试 大括号{} 只能整体使用不可以取数 不可以有重复的项
s=frozenset({1,2,3}) frozenser定义的列表不可变 frozen: 冰冻
s.diffreence(s1) 列出s中有s1没有的项
s.union(s1) 合并s和s1中 相同的只取一项
s.update(s1) 合并s和s1 相同的只取一项
bool : true false 逻辑运算得到的结果为bool类型
字符串 有序的 不可变的 +*运算 属性方法 切片操作 in逻辑
列表 有序的 可变的 +*运算 属性方法 切片操作 in逻辑
元祖 有序的 不可变的 +*运算 属性方法 切片操作 in逻辑
集合 set{} 无序的 可变的 -|^&运算 属性方法 in逻辑
frozenset 无序的 不可变 -|^&运算 属性方法 in逻辑
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy 深拷贝 拷贝对象及其子对象
if 判断条件:
语句块/pass pass:占位符 什么都不执行
if 判断条件:
语句块
else:(如果if条件不成立时执行这个)
语句块
if 判断条件1:
语句块
elif 判断条件2:(当判断条件1不成立时执行这个 可以嵌套无数个这个)
语句块
else:(当判断条件1/2都不成立时 执行这个)语句块
三元运算:x if 判断条件 else z 如果判断条件是真的返回x,如果判断条件是假返回z
range(i,j,[步进值]):i:起始值 j:终止值但不包括
for 变量 in 列表:
语句块
for 变量 in 列表:
语句块
else:
语句块
同时满足多个变量的赋值 前面几项后面必须几项 如 for (i,j) in [(1,2),(1,2),(1,2)]: print i,j
[x for x in [1,2,3]] 生成[1,2,3]
[x+1 for x in [1,2,3]] 生成[2,3,4]
[x+y for x,y in [(1,2),(3,4)]] [3,7]
[x for x in range(101) if not x % 2]
for i in range(len('hello')): print i
获取序列中的值的方法 遍历 for i in "hello": print i
while 判断语句:
语句块
while 判断语句:
语句块
else:
语句块
continue: 跳出本次循环 执行下次判断 再循环
while...else while True:死循环 循环结束条件 与break continue配合
for ...else 多种形式的集合类型 与range的配合 多个变量接收 [x for x in range(100)]
函数是一个完成特定功能的代码模块,其程序代码独立,通常有返回值,也可以是空值。最小的封装单元
1.可以重复使用 2.增加封装特性 1)代码保密 2)规定使用方法 3)无需了解实现机制 4)使代码美观
系统定义好的 dir(builtin) 查看内建函数
是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节
1.功能: 确定函数的功能是设计一个函数的前提。所谓功能就是函数最终要实现什么,决定了一个函数的复杂程度,运用什么方法,还是呢么样的逻辑设计
2.参数 :也叫参变量,是一个变量。也成为形参,通常在函数没有被调用时候形参
3.返回值:返回值是函数执行结束后调用形式返回给调用者的结果。如果一个单纯的功能函数那么也可以没有返回值。没有返回值默认返回none 如果有返回值则用return标识
del 函数名(参数值(可以加也可以不加)):
语句块(函数内部的功能)
return 可以多个返回值 函数执行到return的时候 函数立刻结束 后面的不会执行了
例:
def fun1(a,b):
return a+b,a-b
print fun1(3,2) 输出(5,1) 以元祖的形式传出
1. 函数的形参变量只是在函数内起作用,这种参数的传递实际上是一种引用的共享,即把本地对象与形参变量相联系。
2. 对于不可变变量,当在函数内改变变量值时候只是让这个形参指向了一个新的对象。所以这种改变不会影响原来的本地变量的值。
3. 对于可变变量,如果在函数内修改了值,那么会对原来的引用产生影响。即原来变量的值也会发生改变。这样的做法是Python的一种机制。
def fun(a,b):
print a,b
fun(1,2)
2.定义默认值传参 允许什么都不传 打印默认值 传入一个数 输入传出的数 默认值参数必须放在后面
def fun1(a,b = 100,c=1000):
print a,b,c
fun1(1,2)
def fun2(*a): fu2(a,*b) 把第一个传给a 剩下的传给b
print a
fun2(1,2,3,4,5,6)
def fun3(**a) 必须这个顺序a,d=100,*a,**a
pringt a
fun3(a = 1,b=2)
def fun4(*a,b):
print (a,b)
run4(1,2,3,b=100)
def fun(a,b):
print a,b
fun(1,2)
fun(b = 1,a = 2) 要求名字和关键字名一样
l = [5,6]
fun(*l)
d = {"a":1,"b":2} ====》a = 1,b = 2
fun(**d)
def fun1(x,*args,**kwargs): 传递多少参数都可以 =====》def fun1(x,*a,**b):
在函数外部 定义的是全局变量 在函数内部 定义的是局部变量
全局部分不能够使用局部变量,局部部分可以使用全局变量
当局部变量和全局变量重名时,在函数内部默认使用局部变量
global:想修改全局变量 用global 进行声明
time.sleep(num) 每num秒运行一次