python再學習筆記

來源:互聯網
上載者:User

標籤:

python各種半桶水QAQ,一些特性經常跟其他語言搞混,官方入門文檔重讀溫習......

 

最好用4個空格的縮排
空值是Python裡一個特殊的值,用None表示
變數就是在程式中用來指向這些資料對象的,對變數賦值就是把資料和變數給關聯起來

編碼問題:
print u‘中‘.encode(‘utf-8‘)

另一種有序列表叫元組:tuple。tuple和list非常類似,但是tuple一旦初始化就不能修改,比如同樣是列出同學的名字:classmates = (‘Michael‘, ‘Bob‘, ‘Tracy‘)

可以用一個list表示:classmates = [‘Michael‘, ‘Bob‘, ‘Tracy‘]

用Python寫一個dict如下:
>>> d = {‘Michael‘: 95, ‘Bob‘: 75, ‘Tracy‘: 85}

set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。
要建立一個set,需要提供一個list作為輸入集合: s = set([1, 2, 3])

if注意不要少寫了冒號:

if age >= 6:
print ‘teenager‘

for x in range(100):
sum = sum + x

必須先用int()把字串強制轉換為我們想要的整型:
birth = int(raw_input(‘birth: ‘))

在Python中,定義一個函數要使用def語句,函數的傳回值用return語句返回。
我們以自訂一個求絕對值的my_abs函數為例:
def my_abs(x):
if x >= 0:
return x
else:
return -x

def nop():
pass
實際上pass可以用來作為預留位置,比如現在還沒想好怎麼寫函數的代碼

函數可以返回多個值嗎?答案是肯定的。
return nx, ny

要注意定義可變參數和關鍵字參數的文法:

*args是可變參數,args接收的是一個tuple
**kw是關鍵字參數,kw接收的是一個dict

對應上面的問題,取前3個元素,用一行代碼就可以完成切片:
>>> L[0:3]

建立一個generator:L = [x * x for x in range(10)]

對應到程式設計語言,就是越低級的語言,越貼近電腦,抽象程度低,執行效率高,比如C語言;越進階的語言,越貼近計算,抽象程度高,執行效率低,比如Lisp語言。函數式編程的一個特點就是,允許把函數本身作為參數傳入另一個函數,還允許返回一個函數!結論:函數本身也可以賦值給變數,即:變數可以指向函數。

Python內建的sorted()函數就可以對list進行排序: sorted([36, 5, 12, 9, 21])

正常的函數和變數名是公開的(public),可以被直接引用,比如:abc,x123,PI等;

類似__xxx__這樣的變數是特殊變數,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊變數,hello模組定義的文檔注釋也可以用特殊變數__doc__訪問,我們自己的變數一般不要用這種變數名;
類似_xxx和__xxx這樣的函數或變數就是非公開的(private),不應該被直接引用,比如_abc,__abc等;

Python有兩個封裝了setuptools的包管理工具:easy_install和pip。目前官方推薦使用pip。
eg.: pip install PIL

Python提供了__future__模組,把下一個新版本的特性匯入到目前的版本,於是我們就可以在目前的版本中測試一些新版本的特性。

物件導向:

class Student(object):

def __init__(self, name, score):
self.name = name
self.score = score

def print_score(self):
print ‘%s: %s‘ % (self.name, self.score)

class後面緊接著是類名,即Student,類名通常是大寫開頭的單詞,緊接著是(object),表示該類是從哪個類繼承下來的。

__init__和__del__分別完成初始化和刪除操作

任何時候,如果沒有合適的類可以繼承,就繼承自object類。

通過多重繼承,一個子類就可以同時獲得多個父類的所有功能。


class TestClass(object):
val1 = 100

def __init__(self):
self.val2 = 200

def fcn(self,val = 400):
val3 = 300
self.val4 = val
self.val5 = 500

這裡,val1是類變數,可以由類名直接調用,也可以有對象來調用;
val2是成員變數,可以由類的對象來調用,這裡可以看出成員變數一定是以self.的形式給出的,因為self的含義就是代表執行個體對象;
val3不是成員變數,它只是函數fcn內部的局部變數;
val4和val5也都不是成員變數,雖是以self.給出,但並沒有在建構函式中初始化。

 

所以進階語言通常都內建了一套try...except...finally...的錯誤處理機制,Python也不例外。

當我們認為某些代碼可能會出錯時,就可以用try來運行這段代碼,如果執行出錯,則後續代碼不會繼續執行,而是直接跳轉至錯誤處理代碼,即except語句塊,執行完except後,如果有finally語句塊,則執行finally語句塊,至此,執行完畢。finally如果有,則一定會被執行(可以沒有finally語句)。

如果要拋出錯誤,首先根據需要,可以定義一個錯誤的class,選擇好繼承關係,然後,用raise語句拋出一個錯誤的執行個體.

Python的os模組封裝了常見的系統調用,其中就包括fork,可以在Python程式中輕鬆建立子進程

在Unix/Linux下,multiprocessing模組封裝了fork()調用,使我們不需要關注fork()的細節。由於Windows沒有fork調用,因此,multiprocessing需要“類比”出fork的效果,父進程所有Python對象都必須通過pickle序列化再傳到子進程去,所有,如果multiprocessing在Windows下調用失敗了,要先考慮是不是pickle失敗了。

多任務可以由多進程完成,也可以由一個進程內的多線程完成。

Python的標準庫提供了兩個模組:thread和threading,thread是低級模組,threading是進階模組,對thread進行了封裝。絕大多數情況下,我們只需要使用threading這個進階模組。

有了準備知識,我們就可以在Python中使用Regex了。Python提供re模組,包含所有Regex的功能。

Python的內建模組itertools提供了非常有用的用於操作迭代對象的函數。

好在Python提供了HTMLParser來非常方便地解析HTML,只需簡單幾行代碼:

PIL:Python Imaging Library,已經是Python平台事實上的影像處理標準庫了。PIL功能非常強大,但API卻非常簡單易用。

所以,我們要建立一個基於TCP串連的Socket,可以這樣做:

# 匯入socket庫:
import socket
# 建立一個socket:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立串連:
s.connect((‘www.sina.com.cn‘, 80))


[import fibo]
這樣做不會直接把 fibo 中的函數匯入當前的語義表;它只是引入了模組名 fibo。


import 語句的一個變體直接從被匯入的模組中匯入命名到本模組的語義表中。例如:
>>> from fibo import fib, fib2
>>> fib(500)


甚至有種方式可以匯入模組中的所有定義:
>>> from fibo import *

在from aaa import bbb中:
aaa是一個module
bbb是一個方法或者類搜尋
bbb是在aaa下的

用if __name__ == ‘__main__‘來判斷是否是在直接運行該.py檔案


1.os 和作業系統有關

2.time 與時間有關

3.pcap 抓包

4.dpkt 解包和組包

5.pymssql 進行mssql資料庫操作

6.cProfile 自己debug指令碼效能時用的,可以精確快速計算已耗用時間

7.urllib2 最早接觸的庫之一,跟HTTP有關

8.httplib 與HTTP有關

9.smtplib SMTP的lib

10.poplib POP3的lib

11.tarfile 解tar包

12.socket 最原始的tcp庫

13.paramiko SSH SFTP

14.psyco 增強效能,對函數和類,尤其包含多次迴圈的非常有效

15.pywin32 運用windows的API

16.selenium 介面自動化

17.sqlite3 sqlite3資料庫操作

18.email 郵件的編碼解碼

19.stackless 微線程,據有關人測試,可以達到普通線程的十倍效能

20.wx wxpython,寫介面用的

21.py2exe 把py程式弄成exe可執行檔

22.shutil 很有用,copy,刪除

23.thread 普通線程

python再學習筆記

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.