最新的TIOBE排行榜,Python赶超PHP占据第五!!!html
Python能够应用于众多领域:python
数据分析 组件集成linux
网络服务 图像处理git
数值计算 科学计算等程序员
Python在互联网企业中的使用状况:web
Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA等。shell
互联网公司普遍使用Python来作的事通常有:自动化运维、自动化测试、大数据分析、爬虫、Web 等。数组
安装安全
windos - linux 安装相对比较简单bash
..略..
PS:linux 更新新版本的python后,会致使yum执行异常,只需从新指引原版本号就行
查看默认Python版本 python -V 一、安装gcc,用于编译Python源码 yum install gcc 二、下载源码包,https://www.python.org/ftp/python/ 三、解压并进入源码文件 四、编译安装 ./configure make all make install 五、查看版本 /usr/local/bin/python2.7 -V 六、修改默认Python版本 mv /usr/bin/python /usr/bin/python2.6 ln -s /usr/local/bin/python2.7 /usr/bin/python 七、防止yum执行异常,修改yum使用的Python版本 vi /usr/bin/yum 将头部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6
1、Python 内部执行过程
本身写的.py文件是自定义模块
执行能够经过终端输入和文件两种方式来实现
读文件-->>词法-->>语法分析-->>编译-->>内容-->>执行
2、解释器
像shell同样,使用./脚本名时,其第一行顶格写明指向的解释器。
#!/usr/bin/env python
3、内部编码
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码):2**8=256 没法表示中文
Unicode(统一码、万国码、单一码):最少由 16 位来表示(2个字节),即:2 **16 = 65536
UTF-8,是对Unicode编码的压缩和优化:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存(好处节省磁盘空间)
因此,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),
脚本中编码声明
#!/usr/bin/env python # -*- coding: utf-8 -*-
print "你好,世界"
搞清楚了 ASCII、Unicode 和 UTF-8 的关系,咱们就能够总结一下如今计算机系统通用的
字符编码工做方式:
在计算机内存中,统一使用 Unicode 编码,当须要保存到硬盘或者须要传输的时候,就转
换为 UTF-8 编码。
用记事本编辑的时候,从文件读取的 UTF-8 字符被转换为 Unicode 字符到内存里,编辑完
成后,保存的时候再把 Unicode 转换为 UTF-8 保存到文件:
Python 执行 -->>读进内存 Unicode -->>写入磁盘 UTF-8
4、注释
单行:#被注释内容
多行:"""被注释内容"""
5、捕获脚本传入参数
Python有大量的模块,从而使得开发Python程序很是简洁。类库有包括三中:
Python内部提供的模块
业内开源的模块
程序员本身开发的模块
Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys print sys.argv
6、pyc文件
执行Python代码时,若是导入了其余的 .py 文件,那么,执行过程当中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译以后产生的字节码。
两个命名同样的.py .pyc文件执行顺序
python内部将2文件比较,.py优先
7、变量
一、声明变量
name
=
"abc"
变量名:name
name变量的值:"abc"
变量的做用:昵称,其代指内存里某个地址中保存的内容
变量定义的三条规则:
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
如下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',
'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
PS 不一样大小写的相同昵称的变量表明不用的变量名
二、变量赋值
#!/usr/bin/env python # -*- coding: utf-8 -*- name1 = "abci" name2 = "123"
#!/usr/bin/env python # -*- coding: utf-8 -*- name1 = "abc" name2 = name1
变量赋值会从新开通内存空间,变量的值指向内存地址的内容。
除以上状况外,python 自身优化功能:
Python是由C编写的,多个变量指向同一个值时,会通过预先规定好的范围进行优化,指向同一个值再也不从新开通内存空间,而是指向同一个内存地址。
>>> a='abc' >>> b='abc' >>> id(a),id(b) (140692465670928, 140692465670928) >>> c=500 >>> d=500 >>> id(c),id(d) (18646952, 18646856) >>> e=10 >>> f=10 >>> id(e),id(f) (18371168, 18371168)
剖析Python源代码
8、用户交互
输入:raw_input() getpass.getpass()
#!/usr/bin/env python # -*- coding:utf-8 -*- import getpass # 将用户输入的内容赋值给 name 变量 name = raw_input(">>>") print name # 将用户输入的内容赋值给 name 变量 pwd = getpass.getpass(">>>") print pwd
9、流程控制和缩进
If ….else….
If … elif … elif … else
Split
Strip
Len()
While True:
Break
Continue
多层循环
#!/usr/bin/env python # -*- coding:utf-8 -*- import getpass name = raw_input("请输入用户名:") # 输入alex pwd = getpass.getpass("请输入密码:") if name == "eric" and pwd == "123": print "登陆成功,普通,123" elif name == "tony" and pwd == "123": print "登陆成功,超级,123" elif name == "alex" and pwd == "123": print "登陆成功,超神,123" else: print "登陆失败" """ 嵌套 if pwd == "123": if name == "eric": print "eric,普通" elif name == "tony": print " tony,超级" elif name == "alex": print " alex,超神" else: print "登陆失败" else: print "登陆失败" """ # eric,普通,123 # tony,超级,123 # alex,超神,123
#_*_ coding:utf-8 _*_ import random #导入模块 real_num = random.randrange(10) #设置随机数0~10 #guess_num = raw_input("Please guess the real number:") #输入的是字符串。 #计算机底层会吧字符串变成一个二进制来表示这个字符串,因此因此字符串和数字 #比较是不会出错的,但不能这么比较。 # print type(guese_num) ord(guess_num)#看二进制位 retry_num = 0 #定义输入的次数 while retry_num < 3: #循环每次提示输入,最多重试3次 guess_num = raw_input("Please guess the real number:").strip() if len(guess_num) == 0: #若是输入空格或者回车就从新输入 continue if guess_num.isdigit(): #判断字符串里包含数字是true,而后转成数字 guess_num = int(guess_num) else: print "you need input a integer instead of string" if guess_num > real_num: print "wrong!you need try smaller!" elif guess_num < real_num: print "wrong!you need try bigger!" else: print "you got it!" break #输入正确跳出整个while循环 retry_num +=1 #输入错误循环次数加1 else: #当猜错了执行下面命令 print "The real num is", real_num BUG: 输如“回车”保持,回车是不能转intraw_input后面输入“空格”“回车”会当作一个字符串处理,能够用用字符串内置的方法strip(),默认会把空格和回车都去掉。这里须要判断是否是一个“空格”“或者回车”,每个字符长度是1,输入空格默认长度也是1
break----continue:
break是负责跳出整个循环,但continue是跳出本次循环,继续下一次循环。就是说,循环过程当中,若是遇到continue,那这一次循环本应该执行的后面的代码就不执行了,直接跳过了,直接进行下一次循环了。
'数据类型按特征划分':{ '数字类型':{ '整型':['布尔型','长整型','标准整型'], '非整型':['双精度浮点型','复数','decimal(不是内建类型)'] }, '序列类型':['字符串str','元组tuple','列表list'], '映像类型':'字典dict', '集合类型':['可变集合set','不可变集合frozenset'] }, '数据类型按可变性划分':{ '可哈希的不可变数据类型':['数字类型','字符串str','元组tuple','不可变集合frozenset'], '可变数据类型':['字典dict','可变集合set','列表list'] }
一、数字
2 是一个整数的例子。 长整数 不过是大一些的整数。 3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。 (-5+4j)和(2.3-4.6j)是复数的例子。
int(整型)
>>> a = True >>> if a :print "it is ok" ... it is ok True 是1 Flase是0 C语言中须要定义整型类型,若是超出就报错,python能够自动转换。
"hello world"
字符串格式化
_author_ = "xu" name = raw_input("please input your name:") #age = int(raw_input("please input your age:")) age = input("please input your age:") sex = raw_input("please input your sex:") job = raw_input("please input your job:") print '''information of %s staff NAME:%s AGE:('%d') %f %.2f SEX:%s JOB:%s ''' %(name,name,age,age,age,sex,job)
PS: 字符串是 %s;整数 %d;浮点数%f
字符串经常使用功能:
•移除空白
•分割
•长度
•索引
•切片
四、列表
建立列表:
name_list = ['alex', 'seven', 'eric'] 或 name_list = list(['alex', 'seven', 'eric'])
基本操做:
•索引
•切片
•追加
•删除
•长度
•切片
•循环
•包含
切片:
>>> shopping_list ['Iphone', 'Mac', 'Bike', 'Coffee', 'Car', 'Clothes', 'Food', 'Gift'] >>> shopping_list[0:3] #取0到第3个元素,不包括第4个 ['Iphone', 'Mac', 'Bike'] >>> shopping_list[:3] #同上,取0到第3个元素,不包括第4个,0能够不写 ['Iphone', 'Mac', 'Bike'] >>> shopping_list[2:5] #取第3至第5个元素 ['Bike', 'Coffee', 'Car'] >>> shopping_list[:-3] #取从0至倒数第3个元素 ['Iphone', 'Mac', 'Bike', 'Coffee', 'Car'] >>> shopping_list[-3:] #取最后3个元素 ['Clothes', 'Food', 'Gift'] >>> shopping_list[1:8:2] #从1至8隔一个取一个,后面的2是步长,即每隔几个元素取一个 ['Mac', 'Coffee', 'Clothes', 'Gift'] >>> shopping_list[::2] #从头到位每隔一个取一个 ['Iphone', 'Bike', 'Car', 'Food']
五、元祖
ages = (11, 22, 33, 44, 55) 或 ages = tuple((11, 22, 33, 44, 55))
基本操做:
•索引
•切片
•循环
•长度
•包含
tuple和list很是相似,可是tuple一旦初始化就不能修改。它也没有append(),insert()这样的方法。其余获取元素的方法和list是同样的,但不能赋值成另外的元素。由于tuple不可变,因此代码更安全。
只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:
>>> t = (1,) >>> t (1,)
六、字典(无序)
person = {"name": "mr.wu", 'age': 18} 或 person = dict({"name": "mr.wu", 'age': 18})
经常使用操做:
•索引
•新增
•删除
•键、值、键值对
•循环
•长度
for key in date : print key,date[key] 和下面的到的结果是同样的,但有区别。前者在循环取的时候效率相对高不少。 for key,val in date.items(): print key,val
11、运算
http://www.runoob.com/python/python-operators.html
12、文件的基本操做
file_obj = file("文件路径","模式")
不少时候咱们写的程序都须要对文件进行读、写操做,好比你要分析日志、存储数据等,和其它语言同样,Python也内置了对文件进行操做的函数,下面一块儿来学习一下。
读写文件前,咱们先必须了解一下,在磁盘上读写文件的功能都是由操做系统提供的,现代操做系统不容许普通的程序直接操做磁盘,因此,读写文件就是请求操做系统打开一个文件对象(一般称为文件描述符),而后,经过操做系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)
1. 除了r\w\a三种最经常使用处理文件的模式以外,还有如下几种:
2. r+ 以读写模式打开,其实跟追加的效果是同样的,即能读,又能写,但写实际上是追加内容,可是若是文件不存在的话,不会像a同样建立文件,而是报错
3. w+ 以写读模式打开,
4. a+ 以追加和读的模式打开
5. rb,wb,ab 是指以二进制的模式打开并处理文件,当处理的文件是非文本文件时,就应该以二进制的格式打开文件,但有的同窗说了,我不加b也不出错呀,没错,即便不加b,file也能正常处理二进制文件,可是当你的程序涉及到跨平台时,就可能有问题了,由于在Linux和Windows的换行标志位是不同的,Linux是”\n”,Windows是”\r\n”,因此Windows上的文件在Linux下通常会在换行处显示^M,须要特别转换一下才能正常处理。 当你把Windows的文件copy到Linux并用Python file方法处理时,你在打开模式上加上b,Python就会帮你把^M转成\n,不然你的程序就不知道该在哪换行了喽!因此,咱们建议,若是你预计可能会处理Windows上产生的文件,那仍是默认就加上b吧。
文件其它方法