Python學(xué)習(xí)筆記

1. 熱身

輸出重定向:path/to/file.py > save.txt

模塊:

import module #without suffix

reload(module)

from myTest import test

dir(myTest)查看已經(jīng)引入模塊的所有屬性

變量類型:

Number,數(shù)字:8。

String,字符串:'test'

List,列表:[1,2,4,5]

Dictionaries,字典:{'food': 'spam', 'taste': 'yum'}

Tuple,元組:(1,'spam', 4, 'U') , 和list類似,但是具有不變性

File文件:myfile = open('eggs', 'r')

其它類型:Sets, types, None, Booleans

?

2.?數(shù)字

除完后約去小數(shù)的運算“//”,求余運算符“%”,冪運算符“**”

位操作:左移“<<”、右移“>>”、按位或“|”、按位與“&”

使用Decimal控制精確的小數(shù)點位數(shù):

from decimal import Decimal

print Decimal('1.0') + Decimal('1.2')

bool:真為1,假為0

和數(shù)字相關(guān)的模塊有:math數(shù)學(xué)模塊、random隨機模塊

“等于”和“是” (== and is) 等于檢查兩個變量是不是相等,而is檢查兩個變量是不是引用同一個對象

?

3. 字符串

字符串可以使用雙引號和單引號

換行和引號等需要使用轉(zhuǎn)義字符來表示

在字符串前面加一個r,這種字符串叫做raw string,表示本字符串不轉(zhuǎn)義

Unicode的字符串,需要在字符串的前面加一個u,或者用unicode函數(shù)

將數(shù)字轉(zhuǎn)換為字符串:Str[7:11:2]

刪除輸入字符串最后的換行 :#sliceTestStr[:-1]

ord函數(shù)將字符轉(zhuǎn)換為ASCII碼,chr函數(shù)則相反,將ASCII碼轉(zhuǎn)換為字符。

print "%s -- %s -- %s" % (42, ?3.14159, [1, 2, 3])

print 'My name is %(name)s and I\'m %(age)s ?years old.' % {'name':'Chen Zhe','age':'23'}

?

4. 列表

列表的乘法,注意并不是每個元素乘以二,而是整個列表被重復(fù)了兩次,重新接合成一個新的列表

testList.append

sort

reverse

testList.extend([7,8,9,10])

pop

del testList[0:4]

?

5. 字典和元組

字典:

取得key對應(yīng)的value :可以使用索引的方式,也可以使用get方法,testDict['name'], testDict.get('name')

testDict.has_key('gender')

testDict.keys()

testDict.values()

testDict.items()

添加(key,value)對 :updateDict = {'skill':'JavaSctipt'} ,testDict.update(updateDict)

dict(name='gaoshou')

dict.fromkeys(['a', 'b'], 0)

元組:

元組與列表十分相似,但是類似字符串和數(shù)字它是不可改變的。

元組和列表的互相轉(zhuǎn)換:

testTupleList = list(testTuple)

ortedTuple = tuple(testTupleList)

數(shù)據(jù)類型大概有三個:

數(shù)字(number) 可以加和乘

序列(sequence) 可以索引、切割和連接(index、slice和concatenation)

映射(mapping) 可以使用key來索引(index)。

6. 文件

testFile = open('cainiao.txt','w'),打開文件的形式,w:write,a:append, r:read, b:binary

testFile.write,按行寫入:testFile.writelines

testFile.close()

testStr = testFile.readline(),testStr = testFile.read()

使用Python的pickle模塊,可以將Python對象直接存儲在文件中,并且可以再以后需要的時候重新恢復(fù)到內(nèi)容中

import pickle

testDict = {'name':'Chen ?Zhe','gender':'male'}

pickle.dump(testDict,testFile)

pickle.load(testFile)

?

7. 基本語句

Python的語句不需要用分號來結(jié)尾,而是由解釋器按照換行來判斷語句的結(jié)束。一行多個語句的時候是需要分號的。

元組賦值:a,b = 'a','b'

列表賦值:[a,b]=[1,2]

在Python中有+=之類的賦值,但是沒有++和--這類運算符

將Python的輸出流綁定到一個文件上

from sys import stdout

temp = stdout ?#for later use

outputFile = open('out.txt','a')

stdout = outputFile

stdout.write('just a test')

#回復(fù)輸出流

stdout = temp#restore the output stream

print >> outputFile,'changed for a ?little whie\n'

from sys import stderr

print >> stderr,'error!\n'

?

8. if while控制語句

Python的語法結(jié)構(gòu)有一些不同:

代碼塊是不需要使用大括號來括起來的

if,while等等的條件是不需要使用小括號括起來的

但是控制語句都需要添加一個冒號“:”

if語句

if x>50:?

elif x==50:

else:

邏輯運算符:and, or, not

三元運算符:A = Y if X else Z

while語句

while x:?

else:

?

9. for循環(huán)語句

for i in x:

else:

迭代器(iterator)

文件迭代器,讀取文件的最佳實踐:for line in open('test.txt'):

字典迭代器:

testDict = {'name':'Chen Zhe','gender':'male'}

for key in testDict:

有一些函數(shù)可以在支持迭代協(xié)議的對象上運行:sum, any, all, sorted

for i in range(2:8:2): // range產(chǎn)生循環(huán)范圍

使用zip函數(shù)可以把兩個列表合并起來,成為一個元組的列表

enumerate在循環(huán)的同時可以訪問到當前的索引值

for (offset,item) in enumerate(testStr):

?

10. 函數(shù)

使用def定義一個函數(shù)

函數(shù)里使用的變量為局部變量,可以使用global將變量的作用域擴大到文件內(nèi)部

在調(diào)用函數(shù)的過程中可以不使用函數(shù)定義時候的參數(shù)順序,但是一定要指明參數(shù)的名稱:

show(b=1,a=2)

默認參數(shù):def showDefault(a,b=2,c=3):

結(jié)合參數(shù)(#collecting arguments):

在定義函數(shù)的時候可以使用*args指定在函數(shù)中使用元組的形式訪問參數(shù),使用**args來指定按照字典形式來使用參數(shù)

拆解參數(shù)(#unpacking arguments):

args = [1,2,3,4]

showArgsUnpacking(*args)

函數(shù)也可以被當作參數(shù)來傳遞

lambda可以理解為一種小函數(shù),但是它是一個表達式,而不是一個語句

func = lambda x,y:x+y

L = [(lambda x: x**2), (lambda x: x**3), ?(lambda x: x**4)]

map函數(shù)可以接受函數(shù)和列表作為參數(shù),然后返回函數(shù)處理之后的列表:map(函數(shù)名,列表)

generator函數(shù):

def genMul2(N):

? for i in range(N):

? ?yield i * 2

for i in genMul2(5):print i

for循環(huán)、list comprehension 和 map都使用這個迭代器協(xié)議:

testDict = {'name':'Chen ?Zhe','gender':'male'}

testIter = iter(testDict)

testIter.next()

Tips:

函數(shù)內(nèi)變量為局部變量

數(shù)據(jù)類型可更改、不可更改

?

11. 列表推導(dǎo)式

line.rstrip() for line in open('test.txt')

line.rstrip() for line in open('test.txt') if line[0]=='n'

mul2(i) for i in testList

嵌套循環(huán):x*y for x in [1,2,3] for y in ?[1,2,3]

?

12. 模塊

模塊:

import math

print math.__name__

包package:

package內(nèi)必須有一個__init__.py文件,當其它程序import這個package的時候,這個文件會自動運行。

模塊的引用方式:

#from dir1 import test

#import dir1.test as test

使用字符串動態(tài)地引用模塊

modname = "string"

exec "import " + modname

reload

reload是函數(shù),而不是語句。

reload會影響所有使用import的客戶。

reload不會影響已有的from客戶。

隱藏數(shù)據(jù):

在一個模塊中,_xyz、_val等等前面有一個下劃線的變量是不會被from *所引入的。

如果從另外一個角度隱藏數(shù)據(jù),可以在模塊內(nèi)定義一個__all__屬性,__all__ = [“xyz”,”zz”,”zzx”]

當module是被當作頂級代碼運行的時候,它的__name__是__main__。如果是被其它代碼引用的時候則是它自己的名字??梢岳眠@一點寫測試代碼:

if __name__ == '_ _main_ _':

#do something

相對引用:from .spam import name

?

13. 異常處理

異常處理包括:錯誤處理、事件通知、特殊情況處理、退出時的行為、不正常的程序流程。

try:

except NameError:

我們可以自己觸發(fā)異常,例如: raise IndexError

自定義的異常:

class MyException(Exception):pass

try:

? ? #some code here

? ? raise MyException

except MyException:

一個except內(nèi)捕獲多個異常:except (AttributeError, TypeError, SyntaxError):

捕獲所有異常:except:

finally

無論try塊是否拋出異常,永遠執(zhí)行的代碼。通常用來執(zhí)行關(guān)閉文件,斷開服務(wù)器連接的功能等等。

try、except、else

可以在try塊里加入else塊,代碼塊將在沒有異常被拋出的時候執(zhí)行

raise異常、同時添加數(shù)據(jù)

except MyException,data:

斷言assert :

斷言是指期望指定的條件滿足,如果不滿足則拋出AssertionError異常。

with/as

with/as語句主要是為了代替try/finally語句、通常用來做一些善后工作或者是清理現(xiàn)場的工作。

with open('test.txt') as myfile:

? ? for line in myfile:

? ? ? ? #code here

? ? #code here

當with代碼塊結(jié)束之后,文件將會自動關(guān)閉。


歡迎訪問我的博客: www.dzwanli.com.cn?

參考網(wǎng)址:http://www.cainiao8.com/python/basic/python_01_warm_up.html

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

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

  • 教程總綱:http://www.runoob.com/python/python-tutorial.html 進階...
    健康哥哥閱讀 2,201評論 1 3
  • 要點: 函數(shù)式編程:注意不是“函數(shù)編程”,多了一個“式” 模塊:如何使用模塊 面向?qū)ο缶幊蹋好嫦驅(qū)ο蟮母拍?、屬性?..
    victorsungo閱讀 1,706評論 0 6
  • 最近在慕課網(wǎng)學(xué)習(xí)廖雪峰老師的Python進階課程,做筆記總結(jié)一下重點。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,970評論 0 5
  • python學(xué)習(xí)筆記 聲明:學(xué)習(xí)筆記主要是根據(jù)廖雪峰官方網(wǎng)站python學(xué)習(xí)學(xué)習(xí)的,另外根據(jù)自己平時的積累進行修正...
    renyangfar閱讀 3,300評論 0 10
  • 命令行 命令行可以運行Python程序。通過使用:python xxx.py 如果想要加上一些參數(shù):參考鏈接 在P...
    1angxi閱讀 3,413評論 0 2

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