Welcome | 欢迎学习用Python玩转数据
图形处理,WEB编程,多媒体应用,PYMO引擎
获取股票数据,描述和处理数学问题,解决专业问题(基因序列),搜集互联网信息(文本信息)
1.1 Walk into Python | 走进Python
Python 的应用
- Web 开发:Python定义了WSGI标准应用接口来协调http服务器与基于Python的Web程序之间的沟通
- GUI 开发:用wxPython或者PyQt来开发跨平台的桌面软件
- 操作系统:大多数Linux发布版以及NetBSD,OpenBSD和Mac OS X 都集成了Python,Python标准库包含了多个调用作业系统功能的库
- 多媒体:可用于计算机游戏三维场景制作
1.1.1 Introduction to Python | Python 简介
1.1.2 The First Python Program | 第一个Python程序
经典的Hello World
myString = 'Hello, world'
print myString
Python的运行方式
- Shell方式
- Shell是交互式的解释器
- 输入一行命令,解释器就节食运行出相应结果
>>> myString = 'Hello, World!'
>>> print myString
Hello, World!
>>> myString
'Hello, World!'
- 文件方式
- 在Python的IDE环境中,创建一个以py为扩展名的文件
- 用Python解释器在Shell中运行出结果
# Filename: helloworld.py
mystring = 'Hello, World!'
print mystring
执行环境:Python(x, y)
Python输出:print语句
- Python使用print语句实现输出:
- print 变量
- print 字符串
>>> myString = 'Hello, World!'
>>> print myString
Hello, World!
Python输入:raw_input()语句
- raw_input()返回的类型是字符型
>>> price = raw_input('input the stock price of Apple: ')
input the stock price of Apple: 109
>>> price
'109'
>>> type(price)
<type 'str'>
Python 风格
- 注释:#
>>> # comment No.1
>>> print 'hello world' # comment No.2
hello world!
- 续行:\
>>> # long sentence
>>> if (signal == 'red') and \
(car == 'moving'):
car = 'stop'
elif (signal == 'green') and \
(car == 'stop'):
car = 'moving'
same as:
>>> long sentence
>>> if (signal == 'red') and (car == 'moving'):
car = 'stop'
elif (signal == 'green') and (car == 'stop'):
car = 'moving'
- 无需续行符可直接换行的两种情况:
- 小括号,中括号,大括号的内部可以多行书写
- 三引号包括下的字符串也可以跨行书写
>>> # triple quotes
>>> print '''hi everybody,
welcome to python's MOOC course.
Here we can learn something about
python. Good lucky!'''
- 一行多语句:;
>>> x = 'Today'; y = 'is'; z = 'Thursday'; print (x, y, z)
('Today', 'is', 'Thursday')
>>> x = 'Today'
>>> y = 'is'
>>> z = 'Thursday'
>>> print (x, y, z)
('Today', 'is', 'Thursday')
-
缩进:
- 增加缩进表示语句块的开始
- Python用相同的缩进表示同级别语句块
- 减少缩进表示语句块的退出
>>> # Indentation
>>> if (signal == 'red') and (car == 'moving'):
car = 'stop'
signal = 'yellow'
elif (signal == 'green') and (car == 'stop'):
car = 'moving'
signal = 'yellow'
1.1.3 Basics of Python Syntax | Python 语法基础
变量
- 变量名: 引用对象,标识对象
>>> # variable
>>> p = 3.14159
>>> myString = 'is a mathematic circular constant'
>>> print p, myString
3.14159 is a mathematic circular constant
标识符
- 标识符是指Python语言中允许作为变量名或者其他对象名称的有效符号
- 首字符是字母或下划线
- 其余可以使字母,下划线,数字
- 大小写敏感(PI和pi是不同的标识符)
>>> # Identifier
>>> PI = 3.14159
>>> pi = 'one word'
>>> print PI
3.14159
>>> print pi
one word
关键字
- 关键字是Python语言的关键组成部分,不可随便作为其他对象的标识符
- 在一门语言中关键字是基本固定的集合
- 在IDE中常以不同颜色字体出现
and | as | assert | break | class | continue | def | del |
---|---|---|---|---|---|---|---|
elif | else | except | exec | finally | for | from | global |
if | import | in | is | lambda | not | or | pass |
raise | return | try | while | with | yield |
表达式
- 用运算符连接各种类型数据的式子就是表达式
- 算术运算符:乘方*,正负号+ -,乘除 /,整除//,取余%,加减+ -
- 位运算符:取反~,与&,或|,异或^,左移<<,右移>>
- 比较运算符:小于<,大于>,小于等于<=,大于等于>=,等于==,不等于!=
- 逻辑运算符:非not,与and,或or
- 运算符有优先级顺序
- 表达式必须有运算结果
>>> # expression
>>> PI = 3.14159
>>> r = 2
>>> c_circ = 2 * PI * r # 2*PI*r是表达式,运算结果赋值给变量c_circ
>>> print "The circle's circum: %f" % (c_circ)
赋值
- 变量第一次赋值,同时获得类型和“值”
- Python是动态的强类型语言
- 不需要显式声明,根据“值”确定类型
- 以“引用”的方式实现赋值
>>> # Identifier
>>> PI = 3.14159
>>> pi = 'one word'
>>> print PI
3.14159
>>> print pi
one word
>>> # Identifier
>>> PI = 3.14159
>>> pi = PI
>>> print PI
3.14159
>>> print pi
3.14159
赋值 增量赋值
- 增量赋值符:+=, -=, *=, /=, %=, **=, <<=, >>=, &=, ^=, |=
- m &= 5 即 m = m % 5
>>> # assignment
>>> m = 18
>>> m %= 5
>>> m
3
>>> m **= 2
>>> m
9
>>> # assignment
>>> PI = 3.14159
>>> pi = PI = PI * 2
>>> pi
6.28318
赋值 多元赋值
- 等号左右两边都以元组的方式出现
>>> # assignment
>>> x = 1
>>> y = 2
>>> x, y
(1, 2)
>>> x, y = y, x
>>> x, y
(2, 1)
>>> # assignment
>>> PI, r = 3.14159, 3
>>> PI
3.14159
>>> r
3
>>> (PI, r) = (3.14159, 3) # same as no round brackets
语句
- 完整执行一个任务的一行逻辑代码
- 赋值语句完成了赋值
- print输出语句完成了输出
>>> # sentence
>>> PI = 3.14159
>>> r = 2
>>> c_circ = 2 * PI * r
>>> print "The circle's circum: %f" %(c_circ)
语句和表达式
- 语句:完成一个任务,如打印一份文件
- 表达式:任务重的一个具体组成部分,如这份文件的具体内容
1.1.4 Data Types of Python | Python 数据类型
(长)整型,浮点型,复数型,布尔型,字符串,列表,元组,字典
(长)整型
- 整型和长整型并不严格区分
- 整型值后加“L”即为长整型
>>> # integer
>>> type(3L)
<type 'long'>
>>> type(3)
<type 'int'>
布尔型
- 整型的子类
- 仅有2个值:True, False
- 本质上是用整型的1, 0分别存储的
>>> # boolean
>>> x = True
>>> int(x)
1
>>> y = False
>>> int(y)
0
浮点型
- 即数学中的实数
- 可以类似科学计数法表示
>>> # float
>>> 3.22
3.22
>>> 9.8e3
9800.0
>>> -4.78e-2
-0.0478
>>> type(-4.78e-2)
<type 'float'>
复数型
- j = 根-1,则j是虚数
- 实数+虚数 就是复数
- 虚数部分必须有j
>>> # complex
>>> 2.4 + 5.6j
(2.4 + 5.6j)
>>> type(2.4 + 5.6j)
<type 'complex'>
>>> 3j
3j
>>> type(3j)
<type 'complex'>
>>> 5 + 0j
(5 + 0j)
>>> type(5 + 0j)
<type 'complex'>
- 复数可以分离实数部分和虚数部分
- 复数.real
- 复数.imag
- 复数的共轭
- 复数.conjugate()
>>> # complex
>>> x = 2.4 + 5.6j
>>> x.imag
5.6
>>> x.real
2.4
>>>x.conjugate()
(2.4-5.6j)
序列类型
- 字符串: 单引号,双引号,三引号内的都是字符串,不可变类型
- 列表: 强大的类型,用方括号 [] 界别,可变类型
- 元组: 与列表相似,用小括号 () 界别,不可变类型
字符串的表示
- 单引号
- 双引号
- 三引号
>>> myString = 'Hello World!'
>>> print myString
Hello World!
>>> myString = "Hello World!"
>>> print myString
Hello World!
>>> myString = '''Hello World!'''
>>> print myString
Hello World!
映射类型 字典
- 用大括号 {} 界别
- 类似于哈希表的键值对
>>> # dictionary
>>> d = {'sine': 'sin', 'cosine': 'cos', 'PI': 3.14159}
>>> d['sine']
'sin'
1.1.5 Basic Operations of Python | Python 基本运算
算术运算
- 算术运算符的优先级
- 乘方**, 正负号+ -,
- 乘除* /, 整除//,
- 取余%, 加减+ -
>>> # arithmetic
>>> pi = 3.14159
>>> r = 3
>>> circum = 2 * pi * r
>>> x = 1
>>> y = 2
>>> z = 3
>>> result1 = x + 3/y - z % 2
>>> result2 = (x + y ** z * 4) // 5
>>> print circum, result1, result2
18.84954 1 6
比较运算
- 数值的比较:按值比大小
- 字符串的比较:按ASCII码值大小
>>> # compare
>>> 3 < 4 < 7 # same as (3 < 4) and (4 < 7)
True
>>> 4 > 3 == 3 # same as (4 > 3) and (3 == 3)
True
>>> 4 < 3 < 5 != 2 < 7
False
>>> # compare
>>> 2 == 2
True
>>> 2.46 <= 8.33
True
>>> 'abc' == 'xyz'
False
>>> 'abc' > 'xyz'
False
>>> 'abc' < 'xyz'
True
逻辑运算
- 逻辑运算符优先级:
- not, and, or
>>> # logical
>>> x, y = 3.1415926536, -1024
>>> x < 5.0
True
>>> not (x < 5.0)
False
>>> (x < 5.0) or (y > 2.718281828)
True
>>> (x < 5.0) and (y > 2.718281828)
False
>>> not (x is y)
True
>>> 3 < 4 < 7 # same as "(3 < 4) and (4 < 7)"
True
字符运算符
- 原始字符串操作符(r / R):
- 用于一些不希望转义字符起作用的地方
- Unicode 字符串操作符(u / U):
- 转化成Unicode字符串
>>> # u
>>> print u'Hello\nWorld'
hello
World
>>> # r
>>> f = open('c:\python\test.py', 'w')
Traceback(most recent call last):
File "<pyshell#12>", line 1, in <module>
f = open('c:\python\test.py', 'w')
IOError: [Errno 22] invalid mode ('w') or
filename: 'c:\\python\test.py'
>>> f = open(r'c:\python\test.py', 'w')
>>> f = open('c:\\python\\test.py', 'w')
综合运算
>>> # mix
>>> 3 < 2 and 2 < 1 or 5 > 4
True
>>> x + 3/y - z % 2 > 2
False
>>> 3 - 2 << 1
2
>>> 3 - 2 << 1 < 3
True
1.1.6 Functions, Modules and Packages of Python | Python 的函数,模块和包
函数
- 函数可以看成类似于数学中的函数
- 完成一个特定功能的一段代码
- 绝对值函数
abs(x)
- 类型函数
type(x)
- 四舍五入函数
round(x)
- 绝对值函数
- 内建函数
-
cmp(), str()
和type()
适用于所有标准类型 - 数值型内建函数:
-
abs() | bool() | oct() |
---|---|---|
coerce() | int() | hex() |
divmod() | long() | ord() |
pow() | float() | chr() |
round() | complex() |
- 实用函数
dir() | raw_input() |
---|---|
help() | open() |
len() | range() |
模块
- 非内建函数如何使用?
>>> # round-off floor
>>> floor(5.4)
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
floor(5.4)
NameError: name 'floor' is not defined
>>> # round-off floor
>>> import math
>>> math.floor(-35.4)
-36.0
>>> math.floor(-35.5)
-36.0
>>> math.floor(-35.8)
-36.0
- 一个完成的Python文件即是一个模块
- 文件:物理上的组织方式
math.py
- 模块:逻辑上的组织方式
math
- 文件:物理上的组织方式
- Python通常用 "
import
模块" 的方式将现成模块中的函数,类等重用到其他代码块中-
math.pi
的值可以直接使用,不需要自行定义
-
>>> # module
>>> import math
>>> math.pi
3.141592653589793
- 导入多个模块
- 模块里导入制定的模块属性,也就是把指定名称倒入到当前作用域
>>> import ModuleName
>>> import ModuleName1, ModuleName2, ...
>>> from Module1 import ModuleElement
包(package)
- 一个有层次的文件目录结构
- 定义了一个由模块和子包组成的Python应用程序执行环境
>>> import AAA.CCC.c1
>>> AAA.CCC.c1.func1(123)
>>> from AAA.CCC.c1 import func1
>>> func1(123)
AAA/
__init__.py
bbb.py
CCC/
__init__.py
c1.py
c2.py
DDD/
__init__.py
d1.py
EEE/
...
库(library)
- 库是一组具有相关功能的模块的集合
- Python的一大特色就是具有强大的标准库,以及第三方库,以及自定义模块