Welcome | 歡迎學(xué)習(xí)用Python玩轉(zhuǎn)數(shù)據(jù)
圖形處理,WEB編程,多媒體應(yīng)用,PYMO引擎
獲取股票數(shù)據(jù),描述和處理數(shù)學(xué)問(wèn)題,解決專(zhuān)業(yè)問(wèn)題(基因序列),搜集互聯(lián)網(wǎng)信息(文本信息)
1.1 Walk into Python | 走進(jìn)Python
Python 的應(yīng)用
- Web 開(kāi)發(fā):Python定義了WSGI標(biāo)準(zhǔn)應(yīng)用接口來(lái)協(xié)調(diào)http服務(wù)器與基于Python的Web程序之間的溝通
- GUI 開(kāi)發(fā):用wxPython或者PyQt來(lái)開(kāi)發(fā)跨平臺(tái)的桌面軟件
- 操作系統(tǒng):大多數(shù)Linux發(fā)布版以及NetBSD,OpenBSD和Mac OS X 都集成了Python,Python標(biāo)準(zhǔn)庫(kù)包含了多個(gè)調(diào)用作業(yè)系統(tǒng)功能的庫(kù)
- 多媒體:可用于計(jì)算機(jī)游戲三維場(chǎng)景制作
1.1.1 Introduction to Python | Python 簡(jiǎn)介
1.1.2 The First Python Program | 第一個(gè)Python程序
經(jīng)典的Hello World
myString = 'Hello, world'
print myString
Python的運(yùn)行方式
- Shell方式
- Shell是交互式的解釋器
- 輸入一行命令,解釋器就節(jié)食運(yùn)行出相應(yīng)結(jié)果
>>> myString = 'Hello, World!'
>>> print myString
Hello, World!
>>> myString
'Hello, World!'
- 文件方式
- 在Python的IDE環(huán)境中,創(chuàng)建一個(gè)以py為擴(kuò)展名的文件
- 用Python解釋器在Shell中運(yùn)行出結(jié)果
# Filename: helloworld.py
mystring = 'Hello, World!'
print mystring
執(zhí)行環(huán)境:Python(x, y)
Python輸出:print語(yǔ)句
- Python使用print語(yǔ)句實(shí)現(xiàn)輸出:
- print 變量
- print 字符串
>>> myString = 'Hello, World!'
>>> print myString
Hello, World!
Python輸入:raw_input()語(yǔ)句
- raw_input()返回的類(lèi)型是字符型
>>> price = raw_input('input the stock price of Apple: ')
input the stock price of Apple: 109
>>> price
'109'
>>> type(price)
<type 'str'>
Python 風(fēng)格
- 注釋?zhuān)?strong>#
>>> # comment No.1
>>> print 'hello world' # comment No.2
hello world!
- 續(xù)行:\
>>> # 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'
- 無(wú)需續(xù)行符可直接換行的兩種情況:
- 小括號(hào),中括號(hào),大括號(hào)的內(nèi)部可以多行書(shū)寫(xiě)
- 三引號(hào)包括下的字符串也可以跨行書(shū)寫(xiě)
>>> # triple quotes
>>> print '''hi everybody,
welcome to python's MOOC course.
Here we can learn something about
python. Good lucky!'''
- 一行多語(yǔ)句:;
>>> 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')
-
縮進(jìn):
- 增加縮進(jìn)表示語(yǔ)句塊的開(kāi)始
- Python用相同的縮進(jìn)表示同級(jí)別語(yǔ)句塊
- 減少縮進(jìn)表示語(yǔ)句塊的退出
>>> # 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 語(yǔ)法基礎(chǔ)
變量
- 變量名: 引用對(duì)象,標(biāo)識(shí)對(duì)象
>>> # variable
>>> p = 3.14159
>>> myString = 'is a mathematic circular constant'
>>> print p, myString
3.14159 is a mathematic circular constant
標(biāo)識(shí)符
- 標(biāo)識(shí)符是指Python語(yǔ)言中允許作為變量名或者其他對(duì)象名稱(chēng)的有效符號(hào)
- 首字符是字母或下劃線
- 其余可以使字母,下劃線,數(shù)字
- 大小寫(xiě)敏感(PI和pi是不同的標(biāo)識(shí)符)
>>> # Identifier
>>> PI = 3.14159
>>> pi = 'one word'
>>> print PI
3.14159
>>> print pi
one word
關(guān)鍵字
- 關(guān)鍵字是Python語(yǔ)言的關(guān)鍵組成部分,不可隨便作為其他對(duì)象的標(biāo)識(shí)符
- 在一門(mén)語(yǔ)言中關(guān)鍵字是基本固定的集合
- 在IDE中常以不同顏色字體出現(xiàn)
| 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 |
表達(dá)式
- 用運(yùn)算符連接各種類(lèi)型數(shù)據(jù)的式子就是表達(dá)式
- 算術(shù)運(yùn)算符:乘方*,正負(fù)號(hào)+ -,乘除 /,整除//,取余%,加減+ -
- 位運(yùn)算符:取反~,與&,或|,異或^,左移<<,右移>>
- 比較運(yùn)算符:小于<,大于>,小于等于<=,大于等于>=,等于==,不等于!=
- 邏輯運(yùn)算符:非not,與and,或or
- 運(yùn)算符有優(yōu)先級(jí)順序
- 表達(dá)式必須有運(yùn)算結(jié)果
>>> # expression
>>> PI = 3.14159
>>> r = 2
>>> c_circ = 2 * PI * r # 2*PI*r是表達(dá)式,運(yùn)算結(jié)果賦值給變量c_circ
>>> print "The circle's circum: %f" % (c_circ)
賦值
- 變量第一次賦值,同時(shí)獲得類(lèi)型和“值”
- Python是動(dòng)態(tài)的強(qiáng)類(lèi)型語(yǔ)言
- 不需要顯式聲明,根據(jù)“值”確定類(lèi)型
- 以“引用”的方式實(shí)現(xiàn)賦值
>>> # 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
賦值 多元賦值
- 等號(hào)左右兩邊都以元組的方式出現(xiàn)
>>> # 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
語(yǔ)句
- 完整執(zhí)行一個(gè)任務(wù)的一行邏輯代碼
- 賦值語(yǔ)句完成了賦值
- print輸出語(yǔ)句完成了輸出
>>> # sentence
>>> PI = 3.14159
>>> r = 2
>>> c_circ = 2 * PI * r
>>> print "The circle's circum: %f" %(c_circ)
語(yǔ)句和表達(dá)式
- 語(yǔ)句:完成一個(gè)任務(wù),如打印一份文件
- 表達(dá)式:任務(wù)重的一個(gè)具體組成部分,如這份文件的具體內(nèi)容
1.1.4 Data Types of Python | Python 數(shù)據(jù)類(lèi)型
(長(zhǎng))整型,浮點(diǎn)型,復(fù)數(shù)型,布爾型,字符串,列表,元組,字典
(長(zhǎng))整型
- 整型和長(zhǎng)整型并不嚴(yán)格區(qū)分
- 整型值后加“L”即為長(zhǎng)整型
>>> # integer
>>> type(3L)
<type 'long'>
>>> type(3)
<type 'int'>
布爾型
- 整型的子類(lèi)
- 僅有2個(gè)值:True, False
- 本質(zhì)上是用整型的1, 0分別存儲(chǔ)的
>>> # boolean
>>> x = True
>>> int(x)
1
>>> y = False
>>> int(y)
0
浮點(diǎn)型
- 即數(shù)學(xué)中的實(shí)數(shù)
- 可以類(lèi)似科學(xué)計(jì)數(shù)法表示
>>> # float
>>> 3.22
3.22
>>> 9.8e3
9800.0
>>> -4.78e-2
-0.0478
>>> type(-4.78e-2)
<type 'float'>
復(fù)數(shù)型
- j = 根-1,則j是虛數(shù)
- 實(shí)數(shù)+虛數(shù) 就是復(fù)數(shù)
- 虛數(shù)部分必須有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'>
- 復(fù)數(shù)可以分離實(shí)數(shù)部分和虛數(shù)部分
- 復(fù)數(shù).real
- 復(fù)數(shù).imag
- 復(fù)數(shù)的共軛
- 復(fù)數(shù).conjugate()
>>> # complex
>>> x = 2.4 + 5.6j
>>> x.imag
5.6
>>> x.real
2.4
>>>x.conjugate()
(2.4-5.6j)
序列類(lèi)型
- 字符串: 單引號(hào),雙引號(hào),三引號(hào)內(nèi)的都是字符串,不可變類(lèi)型
- 列表: 強(qiáng)大的類(lèi)型,用方括號(hào) [] 界別,可變類(lèi)型
- 元組: 與列表相似,用小括號(hào) () 界別,不可變類(lèi)型
字符串的表示
- 單引號(hào)
- 雙引號(hào)
- 三引號(hào)
>>> myString = 'Hello World!'
>>> print myString
Hello World!
>>> myString = "Hello World!"
>>> print myString
Hello World!
>>> myString = '''Hello World!'''
>>> print myString
Hello World!
映射類(lèi)型 字典
- 用大括號(hào) {} 界別
- 類(lèi)似于哈希表的鍵值對(duì)
>>> # dictionary
>>> d = {'sine': 'sin', 'cosine': 'cos', 'PI': 3.14159}
>>> d['sine']
'sin'
1.1.5 Basic Operations of Python | Python 基本運(yùn)算
算術(shù)運(yùn)算
- 算術(shù)運(yùn)算符的優(yōu)先級(jí)
- 乘方**, 正負(fù)號(hào)+ -,
- 乘除* /, 整除//,
- 取余%, 加減+ -
>>> # 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
比較運(yùn)算
- 數(shù)值的比較:按值比大小
- 字符串的比較:按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
邏輯運(yùn)算
- 邏輯運(yùn)算符優(yōu)先級(jí):
- 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
字符運(yùn)算符
- 原始字符串操作符(r / R):
- 用于一些不希望轉(zhuǎn)義字符起作用的地方
- Unicode 字符串操作符(u / U):
- 轉(zhuǎn)化成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')
綜合運(yùn)算
>>> # 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 的函數(shù),模塊和包
函數(shù)
- 函數(shù)可以看成類(lèi)似于數(shù)學(xué)中的函數(shù)
- 完成一個(gè)特定功能的一段代碼
- 絕對(duì)值函數(shù)
abs(x) - 類(lèi)型函數(shù)
type(x) - 四舍五入函數(shù)
round(x)
- 絕對(duì)值函數(shù)
- 內(nèi)建函數(shù)
-
cmp(), str()和type()適用于所有標(biāo)準(zhǔn)類(lèi)型 - 數(shù)值型內(nèi)建函數(shù):
-
| abs() | bool() | oct() |
|---|---|---|
| coerce() | int() | hex() |
| divmod() | long() | ord() |
| pow() | float() | chr() |
| round() | complex() |
- 實(shí)用函數(shù)
| dir() | raw_input() |
|---|---|
| help() | open() |
| len() | range() |
模塊
- 非內(nèi)建函數(shù)如何使用?
>>> # 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
- 一個(gè)完成的Python文件即是一個(gè)模塊
- 文件:物理上的組織方式
math.py - 模塊:邏輯上的組織方式
math
- 文件:物理上的組織方式
- Python通常用 "
import模塊" 的方式將現(xiàn)成模塊中的函數(shù),類(lèi)等重用到其他代碼塊中-
math.pi的值可以直接使用,不需要自行定義
-
>>> # module
>>> import math
>>> math.pi
3.141592653589793
- 導(dǎo)入多個(gè)模塊
- 模塊里導(dǎo)入制定的模塊屬性,也就是把指定名稱(chēng)倒入到當(dāng)前作用域
>>> import ModuleName
>>> import ModuleName1, ModuleName2, ...
>>> from Module1 import ModuleElement
包(package)
- 一個(gè)有層次的文件目錄結(jié)構(gòu)
- 定義了一個(gè)由模塊和子包組成的Python應(yīng)用程序執(zhí)行環(huán)境
>>> 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/
...
庫(kù)(library)
- 庫(kù)是一組具有相關(guān)功能的模塊的集合
- Python的一大特色就是具有強(qiáng)大的標(biāo)準(zhǔn)庫(kù),以及第三方庫(kù),以及自定義模塊