Python是一种计算机程序设计语言。你可能已经据说过不少种流行的编程语言,好比很是难学的C语言,很是流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。html
那Python是一种什么语言?java
首先,咱们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,好比下载一个MP3,编写一个文档等等,而计算机干活的CPU只认识机器指令,因此,尽管不一样的编程语言差别极大,最后都得“翻译”成CPU能够执行的机器指令。而不一样的编程语言,干同一个活,编写的代码量,差距也很大。python
好比,完成同一个任务,C语言要写1000行代码,Java只须要写100行,而Python可能只要20行。linux
因此Python是一种至关高级的语言。c++
你也许会问,代码少还很差?代码少的代价是运行速度慢,C程序运行1秒钟,Java程序可能须要2秒,而Python程序可能就须要10秒。程序员
那是否是越低级的程序越难学,越高级的程序越简单?表面上来讲,是的,可是,在很是高的抽象计算中,高级的Python程序设计也是很是难学的,因此,高级程序语言不等于简单。算法
可是,对于初学者和完成普通任务,Python语言是很是简单易用的。连Google都在大规模使用Python,你就不用担忧学了会没用。数据库
用Python能够作什么?能够作平常任务,好比自动备份你的MP3;能够作网站,不少著名的网站包括YouTube就是Python写的;能够作网络游戏的后台,不少在线游戏的后台都是Python开发的。总之就是能干不少不少事啦。编程
Python固然也有不能干的事情,好比写操做系统,这个只能用C语言写;写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。windows
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
龟叔给Python的定位是“优雅”、“明确”、“简单”,因此Python程序看上去老是简单易懂,初学者学Python,不但入门容易,并且未来深刻下去,能够编写那些很是很是复杂的程序。
总的来讲,Python的哲学就是简单优雅,尽可能写容易看明白的代码,尽可能写少的代码。若是一个资深程序员向你炫耀他写的晦涩难懂、动不动就几万行的代码,你能够尽情地嘲笑他。
编程语言排行榜TOP20榜单-2017年1月
注:上述重点字体表示该公司主要使用Python语言开发
C语言: 代码编译获得 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工做
其余语言: 代码编译获得 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行
对于使用:Python的类库齐全而且使用简洁,若是要实现一样的功能,Python 10行代码能够解决,C可能就须要100行甚至更多.
对于速度:Python的运行速度相较与C,绝逼是慢了
对于使用:Linux原装Python,其余语言没有;以上几门语言都有很是丰富的类库支持
对于速度:Python在速度上可能稍显逊色
因此,Python和其余语言没有什么本质区别,其余区别在于:擅长某领域、人才丰富、先入为主。
python
就是启动CPython解释器。CPython是使用最广的Python解释器。IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所加强,可是执行Python代码的功能和CPython是彻底同样的。比如不少国产浏览器虽然外观不一样,但内核其实都是调用了IE。
CPython用>>>
做为提示符,而IPython用In [序号]:
做为提示符。
绝大部分Python代码均可以在PyPy下运行,可是PyPy和CPython有一些是不一样的,这就致使相同的Python代码在两种解释器下执行可能会有不一样的结果。若是你的代码要放到PyPy下执行,就须要了解PyPy和CPython的不一样点。
Python的解释器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是经过网络调用来交互,确保各程序之间的独立性。
windows:
一、下载安装包 https://www.python.org/downloads/ 二、安装 默认安装路径:C:\python35 三、配置环境变量 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】 如:原来的值;C:\python35,切记前面有分号
首先,根据你的Windows版本(64位仍是32位)从Python的官方网站下载Python 3.5对应的64位安装程序或32位安装程序(网速慢的同窗请移步国内镜像),而后,运行下载的EXE安装包:
特别要注意勾上Add Python 3.5 to PATH
,而后点“Install Now”便可完成安装。
验证:
安装成功后,打开命令提示符窗口,敲入python后,会出现两种状况:
状况一:
看到上面的画面,就说明Python安装成功!
你看到提示符>>>
就表示咱们已经在Python交互式环境中了,能够输入任何Python代码,回车后会马上获得执行结果。如今,输入exit()
并回车,就能够退出Python交互式环境(直接关掉命令行窗口也能够)。
状况二: 获得一个错误
'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。
这是由于Windows会根据一个Path
的环境变量设定的路径去查找python.exe
,若是没找到,就会报错。若是在安装时漏掉了勾选Add Python 3.5 to PATH
,那就要手动把python.exe
所在的路径添加到Path中。
若是你不知道怎么修改环境变量,建议把Python安装程序从新运行一遍,务必记得勾上Add Python 3.5 to PATH
。
Linux:
无需安装,原装Python环境,默认2.6版本
PS:若是自带2.6版本,请更新至3.5版本
Windows升级:
卸载重装便可
Linux升级:
Linux的yum依赖自带Python,为防止错误,此处更新其实就是再安装一个Python,建议在python官网下载源码包进行编译安装。
查看默认Python版本 [root@shuke data]# python -V
升级步骤:
一、安装gcc,用于编译Python源码 yum install gcc 二、下载源码包,https://www.python.org/ftp/python/ 三、解压并进入源码文件 四、编译安装 ./configure make all make install 五、查看版本 /usr/local/bin/python3.5 -V 六、修改默认Python版本 mv /usr/bin/python /usr/bin/python2.6 ln -s /usr/local/bin/python3.5 /usr/bin/python 七、防止yum执行异常,修改yum使用的Python版本 vi /usr/bin/yum 将头部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6
八、升级完成后,验证版本
[root@shuke day01]# python -V
Python 3.5.2 # 升级后的python版本为3.5.2
一、使用:
a、建立项目:file ---> new project
b、新建文件夹:右击要建立文件夹的项目或上级目录 ----〉new ---〉directory
c、新建文件:右击要建立文件夹的项目或上级目录 ----〉new ---〉file
d、运行文件:要执行的.py文件内容---〉右击---〉run xx.py
二、文件编码:
file ---->default settings --->editor --->file encodings
三、程序文件模版:
file ---->default settings --->editor --->file and code templates
四、改变字体大小:
file ----〉settings ----〉editor ---> General ---〉mouse
ps.pycharm的更多应用请访问:
http://www.cnblogs.com/wangshuyang/articles/5846563.html
在linux 下建立一个文件名称为hello.py,并输入
print("Hello World!")
而后终端执行命令:python hello.py
[root@shuke day01]# cat hello.py print("Hello World!")
[root@shuke day01]# python hello.py Hello World!
执行 python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。
在Linux/Unix系统中,你能够在脚本顶部添加如下命令让Python脚本能够像SHELL脚本同样可直接执行:
#!/usr/bin/env python # 生命头部,指定解释器 #_*_coding:utf-8_*_ # 指定字符编码,python3.x默认为utf-8 print("Hello World!")
执行前将py脚本文件赋予执行权限:
[root@shuke day01]# chmod +x hello.py # 添加执行权限 [root@shuke day01]# ll hello.py -rwxr-xr-x 1 root root 45 Apr 27 16:49 hello.py [root@shuke day01]# ./hello.py # 直接运行脚本文件 Hello World!
咱们能够在命令提示符中输入"Python"命令来启动Python解释器:
[root@shuke day01]# python # 进入交互模式 Python 3.5.2 (default, Apr 27 2017, 11:27:01) # python版本信息 [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> print ("Hello, Python!"); # 输入 Hello, Python! # 输出 >>> flag = True >>> if flag : # 当键入一个多行结构时,续行是必须的。咱们能够看下以下 if 语句: ... print("flag 条件为 True!") ... # 需再次输入回车 flag 条件为 True! # 输出 >>>
python解释器在加载 .py 文件中的代码时,会对内容进行编码(在python2.x版本中默认为ascill,在python3.x版本中默认字符编码为:unicode)
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其余西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,因此,ASCII码最多只能表示 255 个符号。
------关于中文------
为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。
GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。如今的PC平台必须支持GB18030,对嵌入式产品暂不做要求。因此手机、MP3通常只支持GB2312。
从ASCII、GB23十二、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中老是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文能够统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB23十二、GBK到GB18030都属于双字节字符集 (DBCS)。
有的中文Windows的缺省内码仍是GBK,能够经过GB18030升级包升级到GB18030。不过GB18030相对GBK增长的字符,普通人是很难用到的,一般咱们仍是用GBK指代中文Windows内码。
显然ASCII码没法将世界上的各类文字和符号所有表示,因此,就须要新出一种能够表明全部字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每一个字符设定了统一而且惟一的二进制编码,规定全部的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他再也不使用最少使用2个字节,而是将全部的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
因此,python解释器在加载 .py 文件中的代码时,会对内容进行编码(在python2.x中默认ascill),在2.x版本运行内容包含中文的脚本时,会报错:
报错:ascii码没法表示中文
#!/usr/bin/env python print "你好,世界" # 显示为乱码
改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:
#!/usr/bin/env python # -*- coding: utf-8 -*- # 指定使用utf-8编码进行编码 print "你好,世界" # 显示正常
在python3.x版本中因为默认编码是unicode,因为unicode编码兼容中文,因此能够正常显示中文!
确保对模块, 函数, 方法和行内注释使用正确的风格
Python中的注释有单行注释和多行注释:
Python中单行注释以#开头,例如:
print("Hello, World!") # 这是一个注释
多行注释用三个单引号(''')或者三个双引号(""")将注释括起来,例如:
一、单引号(''')
#!/usr/bin/python3 ''' 这是多行注释,用三个单引号 这是多行注释,用三个单引号 这是多行注释,用三个单引号 ''' print("Hello, World!")
二、双引号(''')
#!/usr/bin/python3 """ 这是多行注释,用三个单引号 这是多行注释,用三个单引号 这是多行注释,用三个单引号 """ print("Hello, World!")
执行Python代码时,若是导入了其余的 .py 文件,那么,执行过程当中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译以后产生的字节码。
PS: 代码通过编译能够产生字节码;字节码经过反编译也能够获得代码。
简述Python的运行过程
在说这个问题以前,咱们先来讲两个概念,PyCodeObject和pyc文件。
咱们在硬盘上看到的pyc天然没必要多说,而其实PyCodeObject则是Python编译器真正编译成的结果。咱们先简单知道就能够了,继续向下看。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,若是找到,则直接载入,不然就重复上面的过程。
因此咱们应该这样来定位PyCodeObject和pyc文件,咱们说pyc文件实际上是PyCodeObject的一种持久化保存方式。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。
#!/usr/bin/env python
#_*_coding:utf-8_*_ name = "shuke"
上述代码声明了一个变量,变量名为: name,变量name的值为:"shukei"
变量定义的规则:
多个变量赋值
a = b = c = 1 # 该实例,建立一个整型对象,值为1,三个变量被分配到相同的内存空间上。 a, b, c = 1, 2, "runoob" # 该实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "runoob" 分配给变量 c。
#!/usr/bin/env python #_*_coding:utf-8_*_ #name = raw_input("What is your name?") #only on python 2.x name = input("What is your name?") print("Hello " + name )
输入密码时,若是想要不进行明文显示,须要利用getpass 模块中的 getpass方法,即:
注: getpass模块须要在终端测试效果,在pycharm IDE中不能测试效果
#!/usr/bin/env python # -*- coding: utf-8 -*- import getpass pwd = getpass.getpass("请输入密码:") # 将用户输入的内容赋值给 pwd 变量 print(pwd) # 打印输入的内容
Python3 中有六个标准的数据类型:
2 是一个整数的例子。
长整数 不过是大一些的整数。
3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是复数的例子
int(整型)
>>> a, b, c, d = 20, 5.5, True, 4+3j >>> print(type(a), type(b), type(c), type(d)) <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
此外还能够用 isinstance 来判断:
>>> a = 111 >>> isinstance(a, int) True
isinstance 和 type 的区别在于:
class A: pass class B(A): pass isinstance(A(), A) # returns True type(A()) == A # returns True isinstance(B(), A) # returns True type(B()) == A # returns False
区别就是:
注:在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值仍是 1 和 0,它们能够和数字相加。
您也可使用del语句删除一些对象引用。
del语句的语法是:
del var1[,var2[,var3[....,varN]]]]
您能够经过使用del语句删除单个或多个对象。例如:
del var del var_a, var_b
数值运算
>>> 5 + 4 # 加法 9 >>> 4.3 - 2 # 减法 2.3 >>> 3 * 7 # 乘法 21 >>> 2 / 4 # 除法,获得一个浮点数 0.5 >>> 2 // 4 # 除法,获得一个整数 0 >>> 17 % 3 # 取余 2 >>> 2 ** 5 # 乘方 32
注意:
"hello world"
name = "shuke" print "i am %s " % name #输出: i am shuke
注: 字符串是 %s;整数 %d;浮点数%f
与 C 字符串不一样的是,Python 字符串不能被改变。向一个索引位置赋值,好比word[0] = 'm'会致使错误。
注意:
List(列表) 是 Python 中使用最频繁的数据类型。
列表能够完成大多数集合类的数据结构实现。列表中元素的类型能够不相同,它支持数字,字符串甚至能够包含列表(所谓嵌套)。
列表是写在方括号([])之间、用逗号分隔开的元素列表。
和字符串同样,列表一样能够被索引和截取,列表被截取后返回一个包含所需元素的新列表。
name_list = ['alex', 'seven', 'eric'] 或 name_list = list(['alex', 'seven', 'eric'])
List内置了有不少方法,例如append()、pop()等等,这在后面会讲到。
注意:
基本操做:
5. Tuple(元组)(不可变的列表)
元组(tuple)与列表相似,不一样之处在于元组的元素不能修改。元组写在小括号(())里,元素之间用逗号隔开。
建立元组:
ages = (11, 22, 33, 44, 55) 或 ages = tuple((11, 22, 33, 44, 55))
string、list和tuple都属于sequence(序列)。
注意:
字典(dictionary)是Python中另外一个很是有用的内置数据类型。
列表是有序的对象结合,字典是无序的对象集合。二者之间的区别在于:字典当中的元素是经过键来存取的,而不是经过偏移存取。
字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是惟一的。
建立字典:
person = {"name": "mr.wu", 'age': 18} 或 person = dict({"name": "mr.wu", 'age': 18})
另外,字典类型也有一些内置的函数,例如clear()、keys()、values()等。
注意:
基本操做:
集合(set)是一个无序不重复元素的序列。
基本功能是进行成员关系测试和删除重复元素。
可使用大括号 {} 或者 set() 函数建立集合,注意:建立一个空集合必须用 set() 而不是 {},由于 {}是用来建立一个空字典。
建立集合:
student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'} name = set() #建立一个空集合
注意:
基本操做:
如下假设变量: a=10,b=20:
如下假设变量a为10,变量b为20:
如下假设变量a为10,变量b为20:
更多内容:http://www.runoob.com/python/python-operators.html
示例:
result = 值1 if 条件 else 值2 # 若是条件成立,那么将 “值1” 赋值给result变量,不然,将“值2”赋值给result变量
若是条件为真:result = 值1
若是条件为假:result = 值2
Python条件语句是经过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
能够经过下图来简单了解条件语句的执行过程:
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if 判断条件: 执行语句…… else: 执行语句…
其中"判断条件"成立时(非零),则执行后面的语句,而执行内容能够多行,以缩进来区分表示同一范围。
else 为可选语句,当须要在条件不成立时执行内容则能够执行相关语句,具体例子以下:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 例1:if 基本用法 flag = False name = 'luren' if name == 'python': # 判断变量否为'python' flag = True # 条件成立时设置标志为真 print 'welcome boss' # 并输出欢迎信息 else: print name # 条件不成立时输出变量名称
if 语句的判断条件能够用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。
当判断条件为多个值时,可使用如下形式:
if 判断条件1: 执行语句1…… elif 判断条件2: 执行语句2…… elif 判断条件3: 执行语句3…… else: 执行语句4……
#!/usr/bin/python # -*- coding: UTF-8 -*- # 例2:elif用法 num = 5 if num == 3: # 判断num的值 print 'boss' elif num == 2: print 'user' elif num == 1: print 'worker' elif num < 0: # 值小于零时输出 print 'error' else: print 'roadman' # 条件均不成立时输出
当if有多个条件时可以使用括号来区分判断的前后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的状况下会比与或要优先判断。
你也能够在同一行的位置上使用if条件判断语句,以下实例:
#!/usr/bin/python # -*- coding: UTF-8 -*- var = 100 if ( var == 100 ) : print "变量 var 的值为100" print "Good bye!"
li = [11,22,33,44] for item in li: print item
sequence = [12, 34, 34, 23, 45, 76, 89] for k,v in enumerate(sequence): print(k,v)
print range(1, 10) # 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9] print range(1, 10, 2) # 结果:[1, 3, 5, 7, 9] print range(30, 0, -2) # 结果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是经过 break 跳出而中断的)的状况下执行,while … else 也是同样。
#!/usr/bin/python # -*- coding: UTF-8 -*- for num in range(10,20): # 迭代 10 到 20 之间的数字 for i in range(2,num): # 根据因子迭代 if num%i == 0: # 肯定第一个因子 j=num/i # 计算第二个因子 print '%d 等于 %d * %d' % (num,i,j) break # 跳出当前循环 else: # 循环的 else 部分 print num, '是一个质数'
使用场景:
with open('a.txt','r',encoding='utf-8') as read_f,\ open('aa.txt','w',encoding='utf-8') as write_f: for line in read_f: write_f.write(line) else: print('write successfull')
有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。
count = 0 while True: print("你是风儿我是沙,缠缠绵绵到天涯...",count) count +=1
在 python 中,while … else 在循环条件为 false 时执行 else 语句块:
#!/usr/bin/python count = 0 while count < 5: print count, " is less than 5" count = count + 1 else: print count, " is not less than 5"
相似 if 语句的语法,若是你的 while 循环体中只有一条语句,你能够将该语句与while写在同一行中, 以下所示:
#!/usr/bin/python flag = 1 while (flag): print 'Given flag is really true!' print "Good bye!"
注意:1. 以上的无限循环你可使用 CTRL+C 来中断循环。
2. pass是空语句,是为了保持程序结构的完整性。
while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还能够是个常值,表示循环一定成立,具体用法以下:
# continue 和 break 用法 i = 1 while i < 10: i += 1 if i%2 > 0: # 非双数时跳过输出 continue print i # 输出双数二、四、六、八、10 i = 1 while 1: # 循环条件为1一定成立 print i # 输出1~10 i += 1 if i > 10: # 当i大于10时跳出循环 break