本文着重于Python基础知识的梳理,并没有涉及Python环境的搭建、具体使用方法和技巧。
0x00. Python简介
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
——摘自廖雪峰的Python教程
Python的特点
Python is powerful... and fast;
plays well with others;
runs everywhere;
is friendly & easy to learn;
is Open.
——摘自Python官网
Python的设计原则
Python的设计哲学是“优雅”、“明确”、“简单”。
简单:源码可以直接运行,就算没有任何编程基础的同学,在配置好Python环境以后都可以轻松打印出大名鼎鼎的Hello World!
(只需一行代码)
# Python 3.x
print('Hello World!')
# Python 2.x
print 'Hello World!'
明确:There should be one-- and preferably only one --obvious way to do it. 用一种方法,最好是只有一种方法来做一件事。
优雅: Python没有使用花括号{}
作为语句块的划分界限,而是使用了严格的字符缩进(一般4个字符),这使得代码更易于阅读和维护。
Python的进化史
--1989: 诞生
--1991: 第一个发行版本
--2011: 被TIOBE编程语言排行榜评为2010年度语言。
0x01. 为什么选择Python
在学习Python之前一直使用Java语言,接触Python语言给我的第一感觉就是语法简洁,不需要复杂的类和函数声明,一行代码就是一个完整可运行的程序。
另外,由于Python语言可读性强,即使没有编程基础的人也能比较容易读懂Python代码,e.g:
>>> print('True' if True else 'False')
True
“龟叔”将Python作为ABC语言的一种继承,他认为ABC语言虽然非常优美且强大,但是没有获得成功的主要原因是非开放造成的。所以Python从设计之处就是开放源代码的,这也为Python以后的发展奠定了基础。
很多Python爱好者基于Python语言开发了大量优秀且高质量的扩展库,使得Python语言在各个领域都有很好的表现,尤其是在科学计算,图形处理,文本处理,网络编程等方面。
以下是一些Python中优秀的扩展:
Numpy:提供大量标准数学库的接口
PIL:使我们能够方便进行图形处理
Pillow:能用在Python3.x版本的PIL库的继承与扩展
Tkinter:能用来创建简单图形化界面
PyOpenGL:封装了OpenGL应用程序编程接口,能进行二维和三维图形处理
Flask:轻量级的web框架,能快速搭建基于SGI的web服务
0x02. Python的基本使用
了解了Python的基本情况,既然Python那么优秀,一定要了解一下Python的用法咯。
python数据类型
数据类型 | 描述 | 例子 | 备注 |
---|---|---|---|
bytes | 一个由字节组成的不可更改的有串行 | b'Hello World!' |
|
str | 字符串类型 |
'Hello World!' "Hello World!" """一般做文档注释""" '''Hello World!''' r'Hello \n World!'
|
在字符串前面加r ,则字符串中的 \ 不转义 |
list | 列表 | [22, 'hello', 'male'] |
|
tuple | 元组,元素初始化时就被固定,不可更改 | (1, '3', 5) |
当元组中只有一个元素时,该元素后面要加, 。e.g: (1,)
|
�dict | 字典,以键值对形式出现 | {'name':'lovexiaov', 'age':25} |
键 只能是不可变类型对象
|
set | 不包含重复元素的集合 | {1, 'hello', (1, 2)} |
一个set中各元素的类型可以不同 |
int | 精度不限的整数 |
3 ,-5
|
python 没有short、long类型 |
float | 浮点数,精度与系统有关 |
3.14 ,-0.02 ,2.2e3
|
|
bool | 逻辑值,只有两个值 |
True ,False
|
|
complex | 复数 | 3.2+4j |
|
NoneType | 空值,只有一个值 | NoneType |
不是null
|
Python语法
如上面提到的,Python的语法足够简洁,下面是常用的语法:
a) 方法定义: 使用def
关键字定义方法:
def fun():
b) 类定义: 使用class
关键字定义类:
class MyClass():
c) 代码块管理: 使用4个字符的缩进管理代码块:
def say_hello():
print('Hello World!')
print('out of function say_hello()')
d) 模块导入: 使用from
, import
, as
关键字导入模块,有以下几种形式:
import os
import os.path as pt
from os import *
from os import path as pt
分支与循环
a) 分支:if...else
和if...elif...else
# if...else
age = 16
if age > 18:
print('you can drunk now')
else:
print('you are too yong to drunk')
# if...elif...else
score = 89
if score < 60:
print('oh, no~~~')
elif score < 75:
print('you must study hard!')
elif score < 90:
print('you performed well')
else:
print('shit, that is so good')
b) 循环: while
和for...in
# while loop
while True:
print('dead loop')
# for...in loop
for i in range(5):
print('i is %d' % i)
异常处理
俗话说,写代码,三分写,七分调,写代码的过程中不出bug是几乎不可能的事情,出错其实并不可怕,每一个bug对我们来说都是一种经验的积累(废话真多~)。
下面我们看一下在Python中怎么处理异常。
a) try...except...finally
如果遇到我们自己能够处理的错误,那我们就把它直接处理掉:
try:
result = 10 / 0
except ZeroDivisionError as err:
print('division by zero')
finally:
print('do what must do whether there is an error or not')
b) raise
有些问题,就算我们知道了也没有能力去解决,那么此时就应该把问题抛给上层解决:
try:
result = 10 / 0
except ZeroDivisionError as err:
print('division by zero')
raise
finally:
print('finally...')
在上面的代码中,虽然我们捕获到了异常,但是我们在记录下异常信息后就将该异常通过raise
关键字原封不动的抛给了上层去处理。
今天的分享到此结束,下面的文章会总结Python中的一些高级特性,主要有如下几点:
高阶函数
面向对象编程
内置函数
常用标准库
...