1.pyhon入门
注1:作者:丁泓斌 出处:https://www.cnblogs.com/dhb5188
参考:Python官网:http://www.python.org/
http://www.cnblogs.com/liu-yao/p/5145828.html
一 python介绍
1.简介
Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。 Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构
2.发展
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 仍然占据着至关重要的作用,指导其进展
3.特点
-
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 2.x 和 3.x
1.print
2.7以下版本 print "hello" 2.7版本print "hello" or print("helllo") 3.x版本print(hello") 注:2.7是一个过渡版本
2. 3x版本源码不需要再生明编码,默认使用utf-8
# -*- coding:utf-8 -*- 可省
3. 模块明明更改
2.x | 3.x |
_winreg | winreg |
ConfigParser | configparser |
copy_reg | copyreg |
Queue | queue |
SocketServer | socketserver |
markupbase | _markupbase |
repr | reprlib |
test.test_support | test_support |
- 整型除法返回浮点数,若要得到整型结果,请使用//
>>> 5/2 2.5 >>> 5//2 2
- 加入nonlocal语句,使用nonlocal x可以直接指派外围(非全局变量)
- 去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数
- 改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的 bool值
- 输入函数改变了,删除了raw_input,用input代替
- 去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了
- 新式的8进制字变量,相应地修改了oct()函数
- class Foo:这种写法不能用了,改成class Foo(object)
三 pyhon解释器
1.cpython python官方版本,使用c实现,最为广泛,将源.py文件转换成字节码pyc文件,然后运行
程序----(c解释器)----(字节码)----(机器码)-----cpu
2. Jython java实现,将python代码动态编译成java字节码,然后在jvm上运行
程序----(java解释器)----(字节码)----(机器码)-----cpu
3. Ironpython 是C#实现,将代码编译成C#上的字节码,然后在clr上运行
程序----(c#解释器)----(字节码)----(机器码)-----cpu
4pypy python实现,将Python的字节码再编译成机器码
程序----(c#解释器)----(字节码)----(机器码)-----cpu
四 .pyc文件
执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。 ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码; 当生成了.pyc文件后,删除源文件 一样可以运行
五 python初探
1 print
1 >>> print ('hello world') 2 hello world 注:python中的单引号 和双引号是一样的效果,都代表字符串
2.输出
1 >>> name = input('your name') 2 your nameding 3 >>> name 4 'ding'
注:2.x中的shi raw_input,3.x更改成input
3.注释
1.单行注释 #被注释内容 2.多行注释 '''1 2 3 '''
4.行和缩进
python函数之间的逻辑关系,不用({})来控制,用缩进来控制;同一逻辑的语句缩进必须相同
5.变量
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> import keyword 2 >>> keyword.kwlist 3 ['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']
6.列表
Python内置一种数据类型是列表:list 是一种有序的集合
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> girl=['xiaocang','xiaoze','xiaobo','xiaoteng'] 2 >>> girl 3 ['xiaocang', 'xiaoze', 'xiaobo', 'xiaoteng']
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> dir(girl) 2 ['__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']
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> girl 2 ['xiaocang', 'xiaoze', 'xiaobo', 'xiaoteng'] 3 >>> girl.index('xiaocang') 4 0 5 >>> girl.index('xiaobo') 6 2
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> girl #切片并返回列表 2 ['xiaocang', 'xiaoze', 'xiaobo', 'xiaoteng'] 3 >>> girl[1:2] 4 ['xiaoze'] 5 >>> girl[0:2] 6 ['xiaocang', 'xiaoze'] 7 >>> girl[0:3] 8 ['xiaocang', 'xiaoze', 'xiaobo'] 9 >>> girl[:3] 10 ['xiaocang', 'xiaoze', 'xiaobo'] 11 >>> girl[:-3] 12 ['xiaocang'] 13 >>> girl[-3] #指定索引输出的字符串 14 'xiaoze' 15 >>> girl[:-2] 16 ['xiaocang', 'xiaoze'] 17 >>> girl[1:3] #前半部分完成输出,后半部分-1输出 18 ['xiaoze', 'xiaobo'] 19 >>>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> girl 2 ['xiaocang', 'xiaoze', 'xiaobo', 'xiaoteng'] 3 >>> girl.append('xiaoyuan') 4 >>> girl 5 ['xiaocang', 'xiaoze', 'xiaobo', 'xiaoteng', 'xiaoyuan'] 6 >>>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> girl 2 ['xiaocang', 'xiaoze', 'xiaobo', 'xiaoteng', 'xiaoyuan'] 3 >>> girl.pop() #删除最后 4 'xiaoyuan' 5 >>> girl 6 ['xiaocang', 'xiaoze', 'xiaobo', 'xiaoteng'] 7 >>> girl.remove('xiaoze') #指定删除 8 >>> girl 9 ['xiaocang', 'xiaobo', 'xiaoteng'] 10 >>>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> girl 2 ['xiaocang', 'xiaobo', 'xiaoteng'] 3 >>> girl.insert(2,'xiaoze') 4 >>> girl 5 ['xiaocang', 'xiaobo', 'xiaoze', 'xiaoteng'] 6 >>>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> girl 2 ['xiaocang', 'xiaobo', 'xiaoze', 'xiaoteng'] 3 >>> girl.count('xiaoze') 4 1 5 >>>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> girl 2 ['xiaocang', 'xiaobo', 'xiaoze', 'xiaoteng'] 3 >>> girl.reverse() 4 >>> girl 5 ['xiaoteng', 'xiaoze', 'xiaobo', 'xiaocang'] 6 >>>
7.元组
Python的元组和列表类似,不同在于元组元素不能修改;元组使用小括号,列表使用方括号。元组只需要在括号中添加元素,并使用逗号隔开
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> code=('a','b','c','d') 2 >>> code 3 ('a', 'b', 'c', 'd') 4 >>>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> dir(code) 2 ['__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']
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 >>> type(code) 2 <class 'tuple'> 3 >>> type(girl) 4 <class 'list'> 5 >>> tuple(girl) 6 ('xiaoteng', 'xiaoze', 'xiaobo', 'xiaocang') 7 >>> list(code) 8 ['a', 'b', 'c', 'd'] 9 >>>
8.字典
字典是另一种可变的容器模式,且可存储任意类型的对象。字典由键和对应值组成,字典也被称作关联数组或哈希表。
1 #创建字典 2 >>> dict={'name':'dhb','age':'27','job':'IT'} 3 >>> dict 4 {'age': '27', 'name': 'dhb', 'job': 'IT'} 5 >>> 6 #每个建与值用冒号(:)隔开,每对用逗号(,),整体放在大括号({}) 7 #键必须独一无二,但值不必 8 #值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元祖
9.运算符
(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).运算符优先级
10.判断
1 if 条件判断: 2 执行 3 else: 4 执行
11.循环
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 lukey_num = 22 4 input_num = -1 5 while input_num != lukey_num: 6 input_num = int(input("input guess num")) 7 if input_num > lukey_num: 8 print ("笨 大了") 9 elif input_num < lukey_num: 10 print ("笨 小了") 11 print ("bingo") 12 13 14 #!/usr/bin/python 15 count = 0 16 while (count < 9): 17 print (count) 18 count = count + 1 19 print "Good bye!" 20 #continue用于跳过该次循环,break用于退出循环
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 for letter in 'Python': # 第一个实例 4 print '当前字母 :', letter 5 fruits = ['banana', 'apple', 'mango'] 6 for fruit in fruits: # 第二个实例 7 print '当前字母 :', fruit 8 print "Good bye!" 9 10 11 luckynum = 20 12 for i in range(3): 13 input_num= int(input('please your lucky number:')) 14 if input_num == luckynum: 15 print('bingo') 16 break 17 elif input_num < luckynum: 18 print('please input big') 19 else: 20 print('plase input small') 21 else: 22 print('too many retrys')
12.文件操作
file = open(
'文件路径'
,
'模式'
)
![](https://images2015.cnblogs.com/blog/866889/201601/866889-20160120170031531-1721878065.png)