python基礎小結

一、python介紹

1、版本區別

2.x.x:運行速度更快,使用它開發的庫和軟件更多。
3.x.x:擁有很多新型編程語言特性。

2、開發環境搭建

  1. www.python.org:下載安裝python運行環境
    (1)配置環境變量,使得cmd可用:path-> C:\Python27
    cmd進入python開發模式:python + Enter鍵
    cmd退出python開發模式:exit() + Enter鍵 / ctrl + Z + Enter鍵
    cmd運行python源程序:cmd進入源文件所在位置,輸入:

     python xx.py
    

(2)python自帶編譯器:IDLE。
使用Ctrl+N可輸入多行python語句,保存后按F5運行。

  1. www.aptana.com:aptana編譯器

  2. www.jetbrains.com:下載pyCharm Professional版本,即python集成開發環境。(注冊碼

  3. www.web2py.com:非常強大的python網站開發框架:web2py。

3、python語言介紹

3大優點:

  • 簡單
  • 功能強大
  • 支持面向對象

7個特點:

  • 大小寫嚴格區分
  • 簡單、易學、支持面向對象
  • 開源
  • 庫非常豐富。
    如標準庫:電子郵件、正則表達式、密碼系統、GUI、FTP等;非標準庫即擴展庫:wxpython、圖像庫等。
  • 跨平臺使用。
    任何平臺寫的python程序,在其他平臺通用。
  • 解釋型語言
  • 高級語言

二、數據類型

1、數

  • int
  • long
  • float
  • bool
  • complex 復數型(如4+2j、-9+20j、56+7j等)

2、字符串

用單引號、雙引號和三引號引起來的字符串。

單引號:

c1 = 'hello'
print c1
c2 = 'It is a "dog"!'  # 單引號中可使用雙引號,且雙引號可輸出出來
print c2

雙引號:

c1 = "hello"
print c1
c2 = "It is a 'dog'!"  # 雙引號中可使用單引號,且單引號可輸出出來
print c2

三引號:

c1 = '''he  # 3個單引號
she
my
you are'''
print c1

c2 = """he  # 3個雙引號
she
my
you are"""
print c2

# 三引號引起的字符串可換行。

例子:

# 輸出 It's a dog!

print "It's a dog!"
print 'It\'s a dog!'


# 輸出 hello world!
#      hello python!

print '''hello world!
hello python!'''

print "hello world!\nhello python!"
自然字符串

若一串字符串需要原樣保留轉義符,不進行任何處理,則使用自然字符串:在字符串前加上r。

print r"hello world!\nhello python!"
字符串的重復
# 方法1:手動重復輸入

# 方法2:重復運算符 *
"hello"*20  # 計算機自動執行重復輸出指令,將hello重復輸出20次
子字符串

索引運算法:[]
返回下標所對應的一個字符。

切片運算法:[:]

[a:b]   從第a下標開始到第b-1下標。
[:b]
[a:]
取字符串長度
a="helloworld"
print len(a)   # 10
切割字符串
a="student"
b=a.split("u")
print b   # ['st', 'dent']

3、列表 []

用來存儲一連串元素的容器。
列表中的元素值可以修改、添加或刪除。

# coding=utf-8
students = ["小明", "小華", "小軍", "小云"]
print students[3]
students[3] = "小東"
print students[3]

4、元組 ()

用來存儲一連串元素的容器。
元組中的元素值不可以修改、添加或刪除。

# coding=utf-8
students = ("小明", "小華", "小軍", "小云")
print students[1]
students[1] = "小強"
print students[1]   # 報錯:TypeError: 'tuple' object does not support item assignment

5、集合 set(元素)

# 去除重復元素
a = set("abcnmaaaaggsng")
print a  # 打印:set(['a', 'c', 'b', 'g', 'm', 'n', 's'])
b = set("cdfm")

# 交集
x = a&b

# 并集
y = a|b

# 差集
z = a-b

6、字典/關聯數組 {}

字典中包含的是一整個事情,里面包括各方面的具體信息。

zidian = {'name':'zhangsan', 'home':'beijing', 'like':'music'}

# 搜某個信息的值
k = {'name':'zhangsan', 'home':'beijing'}
print k['home']

# 添加字典里的項
k['like'] = 'music'
print k['name']
print k['like']

三、python對象

1、python對象類型

內置的對象類型有:數、字符串、列表、元組、字典、集合等。

在python中,一切皆對象。

2、pickle腌制

在python中如果我們有一些對象需要持久性存儲,并且不丟失我們這個對象的類型與數據,則需要將這些對象進行序列化,序列化之后,在需要使用時,我們再恢復為原來的數據。

序列化的這個過程,稱為pickle(腌制)。

import pickle

# 方法1:把對象序列化后存儲到內存中
# dumps(object) 將對象序列化
lista=["mingyue","jishi","you"]
listb=pickle.dumps(lista)
print listb

# loads(string) 將對象數據原樣恢復,并且對象類型也恢復為原來的格式
listc=pickle.loads(listb)
print listc


# 方法2:把對象序列化后存儲到第三方文件中
# dump(object,file) 將對象存儲到文件中序列化
group1=("bajiu","wen","qingtian")
f1=file("1.pk1","wb") # wb:寫入
pickle.dump(group1,f1,True)
f1.close()

# load(object,file) 將dump()存儲在文件里面的數據恢復
f2=file("1.pk1","rb") # rb:讀取
t=pickle.load(f2)
print t
f2.close()

四、行與縮進

1、邏輯行與物理行

邏輯行:一段代碼意義上的行數
物理行:一段代碼實際占用的行數

# coding=utf-8
print "abc"; print "789"; print "777"   # 1個物理行,3個邏輯行

print '''這里是
北京!
歡迎來玩!'''   # 1個邏輯行,3個物理行

2、分號使用規則

每個邏輯行后面必須有分號;每個物理行行末可省略分號(也可不省略)。

3、行連接

1個邏輯行,寫在多個物理行,需要使用反斜扛“\”進行行連接。

# coding=utf-8
print "我們都是\
好孩子"

4、縮進

python中,邏輯行行首的空白是有規定的,行首空白不對,會導致程序執行出錯。

  • 行首不應出現空白
  • if和while,縮進一個TAB
a="789"
 print a   # 報錯:IndentationError: unexpected indent

五、運算符

python運算符

優先級:

  1. 函數調用、尋址、下標
  2. **
  3. ~
  4. 正負號
  5. *、/、%
  6. +、-
  7. <<、>>
  8. &、^、|
  9. 比較運算符
  10. not、and、or
  11. lambda表達式

六、控制流

1、for

for i in 集合:
    執行該部分
else:
    執行該部分

例子:

# One
for i in [1,2,8,9,0]:
    print i

#Two
for i in range(1,7):   # range()函數的作用:生成一個集合的序列
    print i

#Three
for i in range(1,10,2):   # range(start,stop,step)
print i

2、if

例子:

for i in range(1,10):
    if i%2==0:   # 注意:python中比較必須是==,=只做賦值運算符
        print "odd"
    else:
        print "even"    

3、while

例子:

a=7
while a:
    print "hello"
    a=a-1
else:   # 注意:python中,while還可以加else
    print "world"

4、break

在雙層循環語句中,break只能跳出內層循環:

a=10
while a<=12:
    a=a+1
    for i in range(1,7):
        print i
        if i==5:
            break

如果要跳出多層循環外,要使用標示:

// Java代碼
public class BreakTest{
    public statis void main(String args[]){
        out:
        for(int i=0; i<10; i++){
            for(int j=0; j<10; j++){
                if(j=9){
                    break out;
                }
            }
        }
    }
}

七、函數

1、自定義函數

def 函數名():
    函數內容; 函數內容
    函數內容

# 例子
def a():
    print "hello"
2、參數

參數:函數在執行功能時所要用到的數據。

關鍵參數:一個函數中出現多個參數時,可通過參數名字直接給參數賦值,這些參數稱為關鍵參數。

def function(a=1,b=6,c=7):
    print a
    print b
    print c

function(5)   # 5 6 7
function(b=7,a=8)   # 8 7 7
function(5,c=2,b=3)   # 5,3,2
function(b=4,c=2,a=1)   # 1,4,2
3、全局變量
def func3():
    global i
    i=7
    print i

func3()
4、函數調用
#無返回值
def a():
    i=1

a()

#有1個返回值
def test1():
    i=7
    return i   # 代表函數整體值為i

print test1()

#有多個返回值
def test2(i,j):
    k=i*j
    return (i,j,k)   # 元組

x=test2(4,5)
print x   # (4,5,20)

y,z,m=test2(4,5)    # 分別存儲
print y   # 4
print z   # 5
print m   # 20
5、文檔字符串

針對函數多了就會雜亂的問題,有2種方法解決:

  1. 在開發時為每個函數寫一個文檔進行說明;

  2. 在每個函數開頭的地方,加上一行說明性文字,即文檔字符串。
    每次看到函數時,即可看到文檔字符串的說明,很方便。

編寫:文檔字符串必須寫在函數定義的正下方;必須用三引號。

   def d(i,j):
       '''該函數實現了一個乘法運算。   # 簡述函數功能

       函數會返回一個乘法運算的結果。'''   # 具體功能描述
       k=i*j
       return k

查看

# 查看d函數的文檔字符串內容
print d.__doc__   # 方法1

help(d)   # 方法2

八、python模塊

1、什么是模塊?

函數:實現一項/多項功能的一段程序。
模塊:函數功能的擴展,是實現一類功能的程序塊。
模塊內可以重用多個函數。

# 模塊位置
C:\Python27\Lib
# 后綴名:.py / .pyc

2、標準庫模塊與自定義模塊

標準庫模塊:python官方提供的自帶的模塊,伴隨python的安裝而產生。它是某一類模塊,而不是特指某一種模塊。

# sys模塊是其中一種標準庫模塊
import sys
sys.version   #查看python版本信息
sys.executable   #查看當前運行程序的地址
sys.getwindowsversion()   #返回當前windows OS的運行環境
sys.modules.keys()   #返回當前導入模塊的關鍵字
sys.version
sys.executable
sys.getwindowsversion()
sys.modules.keys()

自定義模塊:將自己編寫的python程序放在Lib目錄下,即成為一個模塊。

3、如何導入模塊?

import 模塊名:導入一個模塊

import sys
sys.version   #查看python版本信息

from 模塊名 import 方法名:不僅導入模塊,還導入模塊中對應的一個功能(屬性或方法)。注意:只能一次導入一個模塊的一個功能。

from sys import version
version

4、__name__屬性

__name__是系統的一個變量,用于判斷一個模塊是否是主模塊。

if __name__=="__main__":
    print "It's main"
else:
    print "It's not main"

主模塊:一個模塊是被直接使用的,而未被調用
非主模塊:一個模塊被調用(被import了)
主函數:調用其他函數完成一項功能的函數
非主函數:沒有調用其他函數的函數

5、dir()函數

python中有非常多的模塊,但有時我們會忘記一個模塊有哪些功能。此時,可以用dir()函數來查看指定模塊的功能列表。

dir(sys)

6、字節編譯

(1)什么是.pyc文件?

執行python模塊的2種方式:

  • 先將模塊中的內容編譯成二進制語言,然后執行這些二進制語言
  • 直接執行對應模塊的二進制語言程序(省略了編譯,速度更快)

字節編譯:把模塊編譯成二進制語言程序的過程。

字節編譯會產生一個與編譯的模塊(.py)對應的二進制文件:.pyc文件

(2)字節編譯 vs 編譯

編譯型語言:軟件中有一個獨立的編譯模塊去將程序編譯。

python中字節編譯是由解釋器完成的,因此python仍然是解釋型語言。

(3).pyc文件的產生

運行某一模塊時,會先找對應的.pyc文件,若有,則直接執行.pyc文件。

# 以zipfile.py模塊為例
# 方法1
import zipfile
# 方法2
cd c:\Python27\Lib
python -m compileall zipfile.py
(4).pyc文件的用途
  • 加快了模塊的運行速度

  • 可以進行反編譯:二進制文件 --> 源文件

使用二進制文件查看器Binary Viewer可以查看.pyc文件的內容。

使用Binary Viewer查看zipfile.pyc的內容

九、數據結構

python內置的數據結構:元組、列表、字典等。
python擴展的數據結構:棧、隊列、樹等。

1、棧

class Stack():
    def __init__(st, size):   #初始化
        st.stack=[]
        st.size=size
        st.top=-1
    def push(st, content):
        if st.Full():
            print "Stack is Full!"
        else:
            st.stack.append(content)
            st.top=st.top+1
    def out(st):
        if st.Empty():
            print "Stack is Empty!"
        else:
            st.top=st.top-1
    def Full(st):
        if st.top==st.size:
            return True
        else:
            return False
    def Empty(st):
        if st.top==-1:
            return True
        else:
            return False

2、隊列

class Queue(qu,size):
    def __init__(qu,size):
        qu.queue=[]
        qu.size=size
        qu.head=-1
        qu.tail=-1
    def Full(qu):
        if qu.tail-qu.head+1==qu.size:
            return True
        else:
            return False
    def Empty(qu):
        if qu.head==qu.tail:
            return True
        else:
            return False
    def enQueue(qu,content):
        if qu.Full():
            print "Queue is Full!"
        else:
            qu.queue.append(content)
            qu.tail=qu.tail+1
    def outQueue(qu):
        if qu.Empty():
            print "Queue is Empty!"
        else:
            qu.head=qu.head+1
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內容

  • 本節內容 Python介紹 發展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶輸入...
    小小不懂11閱讀 3,439評論 2 30
  • 前言 Python的創始人為Guido van Rossum。1989年圣誕節期間,在阿姆斯特丹,Guido為了打...
    依依玖玥閱讀 3,590評論 6 37
  • 文/Bruce.Liu1 1.Python前世今生 1.1.Python歷史 Python的創始人: Guido ...
    BruceLiu1閱讀 11,856評論 3 119
  • 1. 簡單的例子 先從一個簡單的例子說起,包含了兩個文件 foo.py 和 demo.py 執行這個程序pytho...
    jiangmo閱讀 1,737評論 0 5
  • 環境管理管理Python版本和環境的工具。p–非常簡單的交互式python版本管理工具。pyenv–簡單的Pyth...
    MrHamster閱讀 3,813評論 1 61