作者:刘耀 出处:http://www.yaomr.com
欢迎转载
提示:
- 语法基于python3.5版本(会唤起2.7本子与3.5本的分别)
- Python命令将以>>>开始,比如 >>>print (‘Hello
World!’) -
window上会采取JetBrains PyCharm 5.0.2专业版
-
Python官网:http://www.python.org/
Python文档下载地址:www.python.org/doc/
一.python简介
Python是同一种植简易易学,功能强大的编程语言,它来胜过效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁之语法和对动态输入的支持,再添加解释性语言的原形,使得它在多数平台上之众世界还是一个精之脚本语言,特别适用于快速的应用程序开发。 Python可以行使为广大世界,如:数据解析、组件集成、网络服务、图像处理、数值计算和科学计算等众领域。
Python 是一个赛层次之结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的计划有十分强之可读性,相比另语言经常利用英文关键字,其他语言的组成部分标点符号,它有着较其它语言更发出特点语法结构。(引用于菜鸟教程)
老二、Python 发展历史
Python 是出于 Guido van Rossum 在八十年代末和九十年代初,在荷兰国度数学与电脑是研究所设计下的。
Python 本身也是出于许多另语言发展而来的,这包 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和任何的脚本语言等等。
譬如 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
本 Python 是由于一个主导开发团队于维护,Guido van Rossum 还占有着重大的打算,指导该开展。(引用于菜鸟教程)
三、Python 特点
-
1.爱学习:Python有相对较少之重要字,结构简单,和一个醒目概念之语法,学习起来越简约。
-
2.爱阅读:Python代码定义之复清楚。
-
3.易维护:Python的成在其的源代码是一对一好保障的。
-
4.一个广大的标准库:Python的极致要命之优势有是增长的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
-
5.相模式:相互之间模式之支持,您得于巅峰输入执行代码并取得结果的言语,互动的测试与调剂代码片断。
-
6.可移植:根据其开源代码的性状,Python已经为移植(也就是是要是其行事)到博阳台。
-
7.可扩展:而您待同段运行高效的第一代码,或者是思念只要编一些未乐意开放之算法,你可以使用C或C++完成那有些顺序,然后起您的Python程序中调用。
-
8.数据库:Python提供有重点的小买卖数据库的接口。
-
9.GUI编程:Python支持GUI可以创造同移植到广大体系调用。
-
10.可嵌入: 君得将Python嵌入到C/C++程序,让你的先后的用户获得”脚本化”的力量。(引用于菜鸟教程)
季、python版本有别
1.print使办法
1
2
|
2.7 版本 print "yaoyao" or print ( "yaoyao" )
3.x 版本 print ( "yaoyao" )
|
2.Py3.X源码文件默认使用utf-8编码
3.模块命名修改
注:(twisted模块还非全支持python3) 4.
语法
1)去除了<>,全部改用!=
2)去除“,全部变更用repr()
3)关键词在as
和with,还有True,False,None
4)整型除法返回浮点数,要获得整型结果,请用//
5)加入nonlocal语句。使用noclocal
x可以直接派外围(非全局)变量
6)去除print语词,加入print()函数实现同之效应。同样的还有
exec语句,已经改为exec()函数
7)改变了逐条操作符的行,例如x<y,当x和y类型不般配配时抛出TypeError而无是回到就的
bool值
8)输入函数改变了,删除了raw_input,用input代替:
9)去除元组参数解包。不克def(a, (b,
c)):pass这样定义函数了
10)
新式的8上前制字变量,相应地改了oct()函数。
11).class
Foo:这种写法不克就此了,改化class Foo(object)
五、Python解释器
1.Cpython
Python的法定版,使用C语言实现,使用最普遍,CPython实现会晤将来自文件(py文件)转换成为字节码文件(pyc文件),然后运行于Python虚拟机上
1
|
程序----(c解释器)----(字节码)----(机器码)-----cpu
|
2.Jyhton
Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后于JVM上运行。
1
|
程序 - - - - (java解释器) - - - - (字节码) - - - - (机器码) - - - - - cpu
|
3.IronPython
Python的C#贯彻,IronPython将Python代码编译成C#字节码,然后在CLR上运行。(与Jython类似)
1
|
程序 - - - - (c #解释器)----(字节码)----(机器码)-----cpu
|
4.PyPy(特殊)
Python实现的Python,将Python的配节码字节码再编译成机器码。
1
|
程序 - - - - (c #解释器)----(字节码)----(机器码)-----cpu
|
-
六.pyc文件
-
履行Python代码时,如果导入了任何的
.py 文件,那么,执行进程被见面自动生成一个及那个同名的 .pyc
文件,该公文就是Python解释器编译之后产生的字节码。 -
ps:代码通过编译可以产生字节码;字节码通过反编译也可以赢得代码。
七.python安装
1.window
(1)进入官网下载安装包:
https://www.python.org/downloads/
2.linux
流动:新本子的Ubuntu和centos7默认为2.7本子
以下为提升到3.4版
(1)安装3.x包:
1
2
3
|
sudo apt - get install python3. 4
python3. 4
>>>
|
八.
用户交互
1:linux
(1)输出
1
2
3
|
python3. 4
>>> print ( 'Hello World!' )
Hello World!
|
print是一个时常因此函数,其效果就是是出口括号中得字符串。(在Python
2.x遭到,print还可以是一个要害字,可写成print ‘Hello World!’)
形容副以下内容,保存并且脱离。
1
2
3
4
5
6
7
8
9
|
$vim HelloWorld.py
#!/usr/bin/env python #必须声明是什么解释器来解释此脚本
print ( 'Hello World!' ) #保存退出
#python HelloWorld.py #运行py
Hello World!
或者给该文件增加可执行权限
chmod a + x HelloWorld.py
. / HelloWorld.py
Hello World
|
(2)输入
Python提供了一个input()
,可以吃用户输入字符串,并存放到一个变量里。比如输入用户的名:
1
2
3
4
5
6
7
|
>>> name = input ( '您的名字' )
您的名字
>>> name = input ( '您的名字' )
您的名字yaoyao
>>> name
'yaoyao'
>>>
|
九、注释
1.单行注释
**注释符#
**
例:
1
|
#代码代码代码被注释
|
2.几近尽注释
”’
**”’
**
例:
1
2
3
4
|
'''第一句
第二句
第三句
'''
|
十、行与缩进
学学Python与外语言极其老的别就是是,Python的代码块不采用大括哀号({})来控制类,函数和任何逻辑判断。python最具特色之饶用缩进来写模块。
缩进的空数量是可变的,但是所有代码块语句必须含有相同的缩进空白数量,这个要严格执行。如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
if True :
print "True"
else :
print "False"
以下代码将会执行错误:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py
if True :
print "Answer"
print "True"
else :
print "Answer"
# 没有严格缩进,在执行时保持
print "False"
#提示以下错误
$ python test.py
File "test.py" , line 5
if True :
^
IndentationError: unexpected indent
|
十一、变量和赋值
1.扬言变量
1
2
3
|
>>> name = 'yaoyao'
>>> name
'yaoyao'
|
宣示一个变量为name 值为:yaoyao
1
2
3
4
|
>>> name = "yaoyao"
>>> age = 20
>>> print (name,age)
( 'yaoyao' , 20 )
|
翻变量内存地址
1
2
|
>>> id (age)
43102336
|
2.变量声称要求
- 变量曰只能是 字母、数字或者下划线的任性组合
- 变量名的率先个字符不可知是数字
以下重点字不克声称也变量誉为(keyword模块,可以出口当前版的具有重要字)
1
2
3
|
>>> import keyword
>>> keyword.kwlist
[ 'False' , 'None' , 'True' , 'and' , 'as' , 'assert' , 'break' , 'class' , 'continue' , 'def' , 'del' , 'elif' , 'else' , 'except' , 'finally' , 'for' , 'from' , 'global' , 'if' , 'import' , 'in' , 'is' , 'lambda' , 'nonlocal' , 'not' , 'or' , 'pass' , 'raise' , 'return' , 'try' , 'while' , 'with' , 'yield' ]
|
十二、数据类型
1.数字
int (整数型)
在32各项机器上,整数的位数为32各,取值范围吗-2**31~2**31-1,即-2147483648~2147483647
在64员系统及,整数的位数为64位,取值范围吗-2**63~2**63-1,即-9223372036854775808~9223372036854775807
float (浮点型)
浮点数用来处理实数,即含小数的数字。类似于C语言中的double类型,占8个字节(64个),其中52员表示的,11员表示指数,剩下
的同一位代表符号。
long(长整型)
跟C语言不同,Python的增长整数没有点名位富有,即:Python没有界定长整数数值的分寸,但其实由机械内存有数,我们以的长整数数值不容许无限好。注意,自从Python2.2于,如果整数发生溢起,Python会自动将整数数据易为长整数,所以现在当长整数数据后不加字母L也未会见造成严重后果了。
2.布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True
、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True
、False
代表布尔值(请留心分寸写),也足以由此布尔运算计算出来:
1
2
3
4
|
>>> True
True
>>> False
False
|
3.字符串 (即无克改的字符list)
字符串是一个整机。如果你想一直修改字符串的某一样有些,是不容许的。但咱能够读来字符串的有同局部。
字符串包含判断操作符:
1
2
3
|
例: in , not in
"He" in str
"she" not in str
|
字符串常用功能:
字符串格式化输出
1
2
3
4
5
6
7
8
9
10
|
#!/usr/bin/env python
name = input ( "name:" )
age = input ( "age:" )
job = input ( "job:" )
print ( '''
Infomation of %s
name:%s
age:%s
job:%s
''' % (name,name,age,job))
|
十三、列表
Python内置的一致栽多少类是列表:list。list是同等种植有序的集结,可以随时添加和去其中的素。
创办列表:
照列出日本之美人:
1
2
3
|
>>> gril = [ 'cangjingkong' , 'xiaoze' , 'tenglan' , 'sondaofeng' ]
>>> gril
[ 'cangjingkong' , 'xiaoze' , 'tenglan' , 'sondaofeng' ]
|
于是dir()函数可以查此列表能使用的点子
1
2
|
>>> dir (gril)
[ '__add__' , '__class__' , '__contains__' , '__delattr__' , '__delitem__' , '__dir__' , '__doc__' , '__eq__' , '__format__' , '__ge__' , '__getattribute__' , '__getitem__' , '__gt__' , '__hash__' , '__iadd__' , '__imul__' , '__init__' , '__iter__' , '__le__' , '__len__' , '__lt__' , '__mul__' , '__ne__' , '__new__' , '__reduce__' , '__reduce_ex__' , '__repr__' , '__reversed__' , '__rmul__' , '__setattr__' , '__setitem__' , '__sizeof__' , '__str__' , '__subclasshook__' , 'append' , 'clear' , 'copy' , 'count' , 'extend' , 'index' , 'insert' , 'pop' , 'remove' , 'reverse' , 'sort' ]
|
基本操作:
索引.index
用索引来访问list中各个一个职位的要素,索引是自0
开始的
1
2
3
4
5
6
|
>>> gril = [ 'cangjingkong' , 'xiaoze' , 'tenglan' , 'sondaofeng' ]
>>> gril.index( 'cangjingkong' )
0
>>> gril.index( 'xiaoze' )
1
>>>
|
切片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
>>> gril = [ 'cangjingkong' , 'xiaoze' , 'tenglan' , 'sondaofeng' ] # 切割列表并返回新的列表
>>> gril[ 1 : 2 ]
[ 'xiaoze' ]
>>> gril[ 0 : 3 ]
[ 'cangjingkong' , 'xiaoze' , 'tenglan' ]
>>> gril[: 3 ]
[ 'cangjingkong' , 'xiaoze' , 'tenglan' ]
>>> gril[: - 1 ]
[ 'cangjingkong' , 'xiaoze' , 'tenglan' ]
>>> gril[: 1 ]
[ 'cangjingkong' ]
>>> gril[ - 2 ]
'tenglan'
>>>
|
追加
1
2
3
|
>>> gril.append( 'zaochuan' )
>>> gril
[ 'cangjingkong' , 'xiaoze' , 'tenglan' , 'sondaofeng' , 'zaochuan' ]
|
删除
1
2
3
|
>>> gril.pop() #返回最后一个元素,并从list中删除
>>> gril
[ 'cangjingkong' , 'xiaoze' , 'tenglan' , 'sondaofeng' ]
|
1
2
3
|
>>> gril.remove( 'xiaoze' ) #remove删除指定值
>>> gril
[ 'cangjingkong' , 'tenglan' , 'sondaofeng' , 'zaochuan' ]
|
插入.insert
1
2
3
|
>>> gril.insert( 2 , 'mahuateng' )
>>> gril
[ 'cangjingkong' , 'tenglan' , 'mahuateng' , 'sondaofeng' , 'zaochuan' ]
|
统计.count
1
2
3
|
>>> gril.insert( 2 , 'mahuateng' )
>>> gril
[ 'cangjingkong' , 'tenglan' , 'mahuateng' , 'sondaofeng' , 'zaochuan' ]
|
反转
1
2
3
4
5
|
>>> gril
[ 'cangjingkong' , 'tenglan' , 'mahuateng' , 'sondaofeng' , 'zaochuan' , 'tenglan' ]
>>> gril.reverse()
>>> gril
[ 'tenglan' , 'zaochuan' , 'sondaofeng' , 'mahuateng' , 'tenglan' , 'cangjingkong' ]
|
十四、元祖
Python的元组与列表类似,不同之处在于元组的素不可知改改。
元组使用小括哀号,列表使用方括号。
元组创建好粗略,只待以括号中补充加元素,并采用逗号隔开即可。
开创元祖:
1
2
3
|
>>> boy=( 'mayun' , 'aobama' , 'liyanhong' , 'mahuateng' )
>>> boy
( 'mayun' , 'aobama' , 'liyanhong' , 'mahuateng' )
|
支持的方式:
1
2
|
>>> dir(boy)
[ '__add__' , '__class__' , '__contains__' , '__delattr__' , '__dir__' , '__doc__' , '__eq__' , '__format__' , '__ge__' , '__getattribute__' , '__getitem__' , '__getnewargs__' , '__gt__' , '__hash__' , '__init__' , '__iter__' , '__le__' , '__len__' , '__lt__' , '__mul__' , '__ne__' , '__new__' , '__reduce__' , '__reduce_ex__' , '__repr__' , '__rmul__' , '__setattr__' , '__sizeof__' , '__str__' , '__subclasshook__' , 'count' , 'index' ]
|
创办空元组
1
2
3
4
|
>>> boy.index( 'mayun' )
0
>>> boy.index( 'liyanhong' )
2
|
基本操作:
索引
1
2
3
4
|
>>> boy.index( 'mayun' )
0
>>> boy.index( 'liyanhong' )
2
|
切片
1
2
|
tuple(gril)
list(boy)
|
长度
1
2
|
tuple(gril)
list(boy)
|
list
和 tuple 的互转化
1
2
|
tuple(gril)
list(boy)
|
十五、字典
字典是另一样种植而变容器模型,且可存储任意档次对象,如其他容器模型。
字典由键和针对性应值成对做。字典也让称关联数组或哈希表。
创造字典:
1
2
3
|
>>> dict = { 'name' : 'liuyao' , 'age' : '20' , 'job' : 'it' }
>>> dict
{ 'job' : 'it' , 'age' : '20' , 'name' : 'liuyao' }
|
每个键和值用冒号隔开(:),每对因此逗号分割,整体放在花括号受({})。
键必须独一无二,但价值则不用。
价好取得任何数据类型,但键必须是不可变的,如字符串,数字还是元组。
注:type()可以翻变量类型
十六、运算符
1.终术运算符
以下假设变量a为10,变量b为20:
2.较运算符
以下假设变量a为10,变量b为20:
3.赋值运算符
以下假设变量a为10,变量b为20:
4.位运算
比如号运算符是把数字看作二进制来进行测算的。Python中之按位运算法则如下:
5.逻辑运算符
Python语言支持逻辑运算符,以下假设变量a为10,变量b为20:
6.成员运算符
7.身卖运算符
位运算符用于比少单对象的存储单元
8.运算符优先级
十七、字符编码
ASCII(American
Standard Code for Information
Interchange,美国规范信息置换代码)是基于拉丁字母的如出一辙效电脑编码系统,主要用来展示现代英语与任何西欧语言,其最多只能用
8 个来代表(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256
单标志。
Unicode
Unicode(统一码、万国码、单一码)是平种植于电脑达动的字符编码。
Unicode 是为缓解传统的字符编码方案的受制而来的,它吧每种语言中之各
个字符设定了合而唯一的老二进制编码,规定虽有的字符和符号最少由 16 位
来代表(2只字节),即:2 **16 = 65536
UTF-8
utF-8,是本着Unicode编码的抽和优化,他不再以最少使用2个字节,而是将
所有的字符和符号进行分类:ascii码中之情节用1只字节保存、欧洲底字符用2独
字节保存,东亚的字符用3单字节保存…
十八、判断
1
2
3
4
5
|
条件判断 if ... else
if <条件判断 1 >:
<执行 1 >
else :
<执行 4 >
|
例:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
if sex == "girl" :
print( '正确' )
else :
print( '错误' )
if sex == "gril" :
print( 'gril' )
elif sex == "man" :
print( 'man' )
elif sex == "ren" :
print( 'ren' )
else :
print( 'no' )
|
十九.循环
1.while
while
判断标准:
行语句……
1
2
3
4
5
6
7
8
9
10
|
LuckyNum = 6
while True:
InLuckyNum = int (input( 'please your lucky number:' ))
if InLuckyNum == LuckyNum:
print( 'bingo ' )
break
elif InLuckyNum < LuckyNum:
print( 'please input big' )
else :
print( 'please input small' )
|
1
2
3
4
5
6
|
#!/usr/bin/python
count = 0
while (count < 9 ):
print (count)
count = count + 1
print "Good bye!"
|
while
语句时还产生另外两单第一的下令 continue,break 来越了巡回,continue
用于跳了该次循环,
break
则是用于退出循环,此外”判断标准”还得是独常价,表示循环必定起,具体用法如下:
1
2
3
4
5
6
7
8
|
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for letter in 'Python' : # 第一个实例
print '当前字母 :' , letter
fruits = [ 'banana' , 'apple' , 'mango' ]
for fruit in fruits: # 第二个实例
print '当前字母 :' , fruit
print "Good bye!"
|
绝循环
1
2
3
4
5
6
7
8
|
#!/usr/bin/python
# -*- coding: UTF-8 -*-
for letter in 'Python' : # 第一个实例
print '当前字母 :' , letter
fruits = [ 'banana' , 'apple' , 'mango' ]
for fruit in fruits: # 第二个实例
print '当前字母 :' , fruit
print "Good bye!"
|
2.for循环
1
2
3
4
5
6
7
8
|
#!/usr/bin/python
# -*- coding: UTF- 8 -*-
for letter in 'Python' : # 第一个实例
print '当前字母 :' , letter
fruits = [ 'banana' , 'apple' , 'mango' ]
for fruit in fruits: # 第二个实例
print '当前字母 :' , fruit
print "Good bye!"
|
1
2
3
4
5
6
7
8
9
10
11
12
|
luckynum = 20
for i in range( 3 ):
input_num= int (input( 'please your lucky number:' ))
if input_num == luckynum:
print( 'bingo' )
break
elif input_num < luckynum:
print( 'please input big' )
else :
print( 'plase input small' )
else :
print( 'too many retrys' )
|
二十、文件操作
打开文件:
1
|
file = open( '文件路径' , '模式' )
|