很多初学Python的同学经常问我这样的问题:学Python应该看什么书啊?我会非常自信的把之前整理的Python教程扔给他,后来收到很多反馈:你的排版太烂了,你遗漏了好多知识点,能不能加一点练习题?
经过较长时间的反思,准备整理第二版Python基础教程–菜鸟学Python,第二版会加上自己这一段时间来学习python过程中的一些感悟,走过的弯路,毕竟之前的自己还是太嫩了,会补充之前遗漏的知识点,同时会增加一些练习题和面试题,希望帮助大家轻松愉快,由浅入深的学习Python。
/ 01 / 什么Python?
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。
Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。Python的源代码同样遵循GPL(GNU General Public License)协议。本教程基于Python3,Python的3.0版本,常被称为Python3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python3.0在设计的时候没有考虑向下兼容。
那么这里会有一个面试题:
Python2.0和Python3.0的区别?
print 函数
print语句没有了,取而代之的是print()函数。Python2.6与Python 2.7部分地支持这种形式的print语法。在Python2.6与Python2.7里面,以下三种形式是等价的:
1print "fish"
2print ("fish") #注意print后面有个空格
3print("fish") #print()不能带有任何其它参数
Unicode
Python 2 有 ASCII str() 类型,unicode() 是单独的,不是 byte 类型。
现在, 在 Python 3,我们最终有了 Unicode (utf-8) 字符串,以及一个字节类:byte 和 bytearrays。
除法运算
敲黑板,这里非常重要!
Python中的除法较其它语言显得非常高端,有套很复杂的规则。Python中的除法有两个运算符,/和//
首先来说/除法:
在python2.x中/除法就跟我们熟悉的大多数语言,比如Java啊C啊差不多,整数相除的结果是一个整数,把小数部分完全忽略掉,浮点数除法会保留小数点的部分得到一个浮点数的结果。
在python 3.x中/除法不再这么做了,对于整数之间的相除,结果也会是浮点数。
1#Python 2.x:
2>>> 1 / 2
30
4>>> 1.0 / 2.0
50.5
6
7#Python 3.x:
8>>> 1/2
90.5
而对于//除法,这种除法叫做floor除法,会对除法的结果自动进行一个floor操作,在python 2.x和python 3.x中是一致的。
1#python 2.x:
2
3>>> -1 // 2
4-1
5
6#python 3.x:
7
8>>> -1 // 2
9-1
异常
在 Python 3 中处理异常也轻微的改变了,在Python3中我们现在使用 as 作为关键词。
捕获异常的语法由 except exc, var 改为 except exc as var。
使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支持这两种语法。
- 1. 在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出。
- 2. 2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可。
在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。
https://www.zhihu.com/question/19698598
/ 02 / 环境搭建
Python3下载:
Python官网:https://www.python.org/
选择响应的平台和版本进行下载。
Python 安装:
以Window平台安装Python为例,访问:
https://www.python.org/downloads/windows/
一般就下载executable installer,x86 表示是32位,x86-64表示64位。
勾选 Add Python 3.6 to PATH。
按 Win+R 键,输入 cmd 调出命令提示符,输入 python回车:
跟上图一样就表示你已经安装成功。
对于编译器大家随意吧,我用的是pycharm,后台回复【python安装包】可以获得pycharm和python的安装包。
/ 03 / 基础语法
标识符跟其他语言的命名规范基本类似:
- 第一个字符必须是字母表中字母或下划线 _ 。
- 标识符的其他的部分由字母、数字和下划线组成。
- 标识符对大小写敏感。
以下划线开头的标识符是有特殊意义的。
注:
以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入;
以双下划线开头的 __foo 代表类的私有成员;
以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。
保留字:任何语言都有自己的保留字,Python提供了一个keyword模块,可以输出当前版本的所有关键字。
1>>> import keyword
2>>> keyword.kwlist
3['False', 'None', 'True', 'and', 'as', 'assert', 'break',
4'class', 'continue', 'def', 'del', 'elif', 'else', 'except',
5 'finally', 'for', 'from', 'global', 'if', 'import', 'in',
6 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
7'return', 'try', 'while', 'with', 'yield']
注释:python中的注释有#单行注释,”’ ”’和””” “””多行注释。
1# 单行注释
2'''
3多行注释
4'''
5"""
6多行注释
7"""
行与缩进:python最具特色的就是使用缩进来表示代码块,不需要使用大括号 {},这个地方是很多初学者特别容易出错的地方,虽然缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
如果出现下面的错误,那么你要去检查你的代码是不是因为缩进而出现的错误。
1IndentationError: unindent does not match any outer indentation level
import 与 from…import:
在 python 用 import 或者 from…import 来导入相应的模块。
将整个模块(somemodule)导入,格式为:
1import module
从某个模块中导入某个函数,格式为:
1from module import function
从某个模块中导入多个函数,格式为:
1 from module import func, func, func
将某个模块中的全部函数导入,格式为:
1from module import *
多行与一行显示语句:
Python通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句;当然也以在同一行中使用多条语句,语句之间使用分号(;)分割。
1total = item_one +
2 item_two +
3 item_three
1 x = 'Ahab杂货铺'; print(x)