Python筆記(一):基礎(chǔ)知識(shí)

本文著重于Python基礎(chǔ)知識(shí)的梳理,并沒(méi)有涉及Python環(huán)境的搭建、具體使用方法和技巧。

0x00. Python簡(jiǎn)介

Python是著名的“龜叔”Guido van Rossum在1989年圣誕節(jié)期間,為了打發(fā)無(wú)聊的圣誕節(jié)而編寫的一個(gè)編程語(yǔ)言。

——摘自廖雪峰的Python教程

Python的特點(diǎn)

Python is powerful... and fast;

plays well with others;

runs everywhere;

is friendly & easy to learn;

is Open.

——摘自Python官網(wǎng)

Python的設(shè)計(jì)原則

Python的設(shè)計(jì)哲學(xué)是“優(yōu)雅”、“明確”、“簡(jiǎn)單”。

簡(jiǎn)單:源碼可以直接運(yùn)行,就算沒(méi)有任何編程基礎(chǔ)的同學(xué),在配置好Python環(huán)境以后都可以輕松打印出大名鼎鼎的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. 用一種方法,最好是只有一種方法來(lái)做一件事。

優(yōu)雅: Python沒(méi)有使用花括號(hào){}作為語(yǔ)句塊的劃分界限,而是使用了嚴(yán)格的字符縮進(jìn)(一般4個(gè)字符),這使得代碼更易于閱讀和維護(hù)。

Python的進(jìn)化史

--1989: 誕生

--1991: 第一個(gè)發(fā)行版本

--2011: 被TIOBE編程語(yǔ)言排行榜評(píng)為2010年度語(yǔ)言。

0x01. 為什么選擇Python

在學(xué)習(xí)Python之前一直使用Java語(yǔ)言,接觸Python語(yǔ)言給我的第一感覺(jué)就是語(yǔ)法簡(jiǎn)潔,不需要復(fù)雜的類和函數(shù)聲明,一行代碼就是一個(gè)完整可運(yùn)行的程序。

另外,由于Python語(yǔ)言可讀性強(qiáng),即使沒(méi)有編程基礎(chǔ)的人也能比較容易讀懂Python代碼,e.g:

>>> print('True' if True else 'False')
True

“龜叔”將Python作為ABC語(yǔ)言的一種繼承,他認(rèn)為ABC語(yǔ)言雖然非常優(yōu)美且強(qiáng)大,但是沒(méi)有獲得成功的主要原因是非開(kāi)放造成的。所以Python從設(shè)計(jì)之處就是開(kāi)放源代碼的,這也為Python以后的發(fā)展奠定了基礎(chǔ)。

很多Python愛(ài)好者基于Python語(yǔ)言開(kāi)發(fā)了大量?jī)?yōu)秀且高質(zhì)量的擴(kuò)展庫(kù),使得Python語(yǔ)言在各個(gè)領(lǐng)域都有很好的表現(xiàn),尤其是在科學(xué)計(jì)算,圖形處理,文本處理,網(wǎng)絡(luò)編程等方面。

以下是一些Python中優(yōu)秀的擴(kuò)展:

Numpy:提供大量標(biāo)準(zhǔn)數(shù)學(xué)庫(kù)的接口

PIL:使我們能夠方便進(jìn)行圖形處理

Pillow:能用在Python3.x版本的PIL庫(kù)的繼承與擴(kuò)展

Tkinter:能用來(lái)創(chuàng)建簡(jiǎn)單圖形化界面

PyOpenGL:封裝了OpenGL應(yīng)用程序編程接口,能進(jìn)行二維和三維圖形處理

Flask:輕量級(jí)的web框架,能快速搭建基于SGI的web服務(wù)

0x02. Python的基本使用

了解了Python的基本情況,既然Python那么優(yōu)秀,一定要了解一下Python的用法咯。

python數(shù)據(jù)類型

數(shù)據(jù)類型 描述 例子 備注
bytes 一個(gè)由字節(jié)組成的不可更改的有串行 b'Hello World!'
str 字符串類型 'Hello World!'
"Hello World!"
"""一般做文檔注釋"""
'''Hello World!'''
r'Hello \n World!'
在字符串前面加r,則字符串中的 \ 不轉(zhuǎn)義
list 列表 [22, 'hello', 'male']
tuple 元組,元素初始化時(shí)就被固定,不可更改 (1, '3', 5) 當(dāng)元組中只有一個(gè)元素時(shí),該元素后面要加,。
e.g:(1,)
?dict 字典,以鍵值對(duì)形式出現(xiàn) {'name':'lovexiaov', 'age':25} 只能是不可變類型對(duì)象
set 不包含重復(fù)元素的集合 {1, 'hello', (1, 2)} 一個(gè)set中各元素的類型可以不同
int 精度不限的整數(shù) 3,-5 python 沒(méi)有short、long類型
float 浮點(diǎn)數(shù),精度與系統(tǒng)有關(guān) 3.14,-0.02,2.2e3
bool 邏輯值,只有兩個(gè)值 True,False
complex 復(fù)數(shù) 3.2+4j
NoneType 空值,只有一個(gè)值 NoneType 不是null

Python語(yǔ)法

如上面提到的,Python的語(yǔ)法足夠簡(jiǎn)潔,下面是常用的語(yǔ)法:

a) 方法定義: 使用def關(guān)鍵字定義方法:

def fun():

b) 類定義: 使用class關(guān)鍵字定義類:

class MyClass():

c) 代碼塊管理: 使用4個(gè)字符的縮進(jìn)管理代碼塊:

def say_hello():
    print('Hello World!')
print('out of function say_hello()')

d) 模塊導(dǎo)入: 使用from, import, as關(guān)鍵字導(dǎo)入模塊,有以下幾種形式:

import os
import os.path as pt
from os import *
from os import path as pt

分支與循環(huán)

a) 分支if...elseif...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) 循環(huán): whilefor...in

# while loop
while True:
    print('dead loop')

# for...in loop

for i in range(5):
    print('i is %d' % i)

異常處理

俗話說(shuō),寫代碼,三分寫,七分調(diào),寫代碼的過(guò)程中不出bug是幾乎不可能的事情,出錯(cuò)其實(shí)并不可怕,每一個(gè)bug對(duì)我們來(lái)說(shuō)都是一種經(jīng)驗(yàn)的積累(廢話真多~)。

下面我們看一下在Python中怎么處理異常。

a) try...except...finally

如果遇到我們自己能夠處理的錯(cuò)誤,那我們就把它直接處理掉:

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

有些問(wèn)題,就算我們知道了也沒(méi)有能力去解決,那么此時(shí)就應(yīng)該把問(wèn)題拋給上層解決:

try:
    result = 10 / 0
except ZeroDivisionError as err:
    print('division by zero')
    raise
finally:
    print('finally...')

在上面的代碼中,雖然我們捕獲到了異常,但是我們?cè)谟涗浵庐惓P畔⒑缶蛯⒃摦惓Mㄟ^(guò)raise關(guān)鍵字原封不動(dòng)的拋給了上層去處理。

今天的分享到此結(jié)束,下面的文章會(huì)總結(jié)Python中的一些高級(jí)特性,主要有如下幾點(diǎn):

高階函數(shù)

面向?qū)ο缶幊?br>
內(nèi)置函數(shù)

常用標(biāo)準(zhǔn)庫(kù)

...

0x03. 參考鏈接

·Python官網(wǎng)

·Python百度百科

·廖雪峰的Python教程

·Python中文學(xué)習(xí)大本營(yíng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    aimaile閱讀 26,835評(píng)論 6 427
  • 前言 Python的創(chuàng)始人為Guido van Rossum。1989年圣誕節(jié)期間,在阿姆斯特丹,Guido為了打...
    依依玖玥閱讀 3,706評(píng)論 6 37
  • GitHub 上有一個(gè) Awesome - XXX 系列的資源整理,資源非常豐富,涉及面非常廣。awesome-p...
    若與閱讀 19,321評(píng)論 4 417
  • 環(huán)境管理管理Python版本和環(huán)境的工具。p–非常簡(jiǎn)單的交互式python版本管理工具。pyenv–簡(jiǎn)單的Pyth...
    MrHamster閱讀 3,955評(píng)論 1 61
  • 張愛(ài)玲的一句“出名要趁早”不知點(diǎn)醒了多少人,也不知誤導(dǎo)了多少人。這是我在讀《傾城之戀》之前對(duì)她唯一的了解。我知她命...
    不覚閱讀 1,782評(píng)論 0 1

友情鏈接更多精彩內(nèi)容