《簡明Python教程》學習筆記


簡明python教程網址:http://sebug.net/paper/python

 1 help(sys)
 2 help(int)
 3 help(list)
 4 help(dict)
 5 help(str)
 6 help(file)
 7 sys模塊
 8 print sys.__doc__
 9 help(sys.exit)
10 help(sys.stdin)
11 help(sys.stdout)
12 help(sys.stderr)

1.
運算符通常由左向右結合,即具有相同優先級的運算符按照從左向右的順序計算。例如,2 + 3 + 4被計算成(2 + 3) + 4。一些如賦值運算符那樣的運算符是由右向左結合的,即a = b = c被處理為a = (b = c)。
2.

-25.5%2.25=1.5

3.
**是冪運算,布爾(not、or、and)邏輯(&,|,^,~)
4.
輸出變量

1 area = 5
2 print 'Area is', area
3 Area is 5[自動輸出1個空格]

5.

1 if condintion1:
2  func1
3 elif condition2:
4  func2
5 else :
6  func3

注意:if語句在結尾處包含一個冒號——我們通過它告訴Python下面跟着一個語句塊。
6.

1 guess = int(raw_input('Enter an integer:'))

我們為內建的raw_input函數提供一個字符串,這個字符串被打印在屏幕上,然后等待用戶的輸入。一旦我們輸入一些東西,然后按回車鍵之后,函數返回輸入。對於raw_input函數來說是一個字符串。我們通過int把這個字符串轉換為整數,並把它存儲在變量guess中。
7.
True、False、None首字母不能小寫。
8.

#while
while condtion1:
    func1
else:
    func2
#for
for i in range(1,5):
    func1
else:
    func2

注意:
else從句可有可無
注釋用#
9.
range(begin,end,step)
range 以step為步長,延伸到end,但它不包含end。
10.
【Python的for循環更加簡單、明白、不易出錯。】
在C/C++中,如果你想要寫for (int i = 0; i < 5; i++),那么用Python,你寫成for i in range(0,5)。
11.
def sayHello():
 print 'Hello world!'
sayHello()
12.
global x,y,z
13.
print 'zhanghe'*5
14.
如果你的某個函數有許多參數,而你只想指定其中的一部分,那么你可以通過命名來為這些參數賦值——這被稱作 關鍵參數 ——我們使用名字(關鍵字)而不是位置(我們前面所一直使用的方法)來給函數指定實參。
func(50,c=100)
先按照關鍵參數、在按照順序
15.
除非你提供你自己的return語句,每個函數都在結尾暗含有return None語句。
16.
pass語句在Python中表示一個空的語句塊。
17.
文檔字符串的慣例是一個多行字符串,它的首行以大寫字母開始,句號結尾。第二行是空行,從第三行開始是詳細的描述。 強烈建議 你在你的函數中使用文檔字符串時遵循這個慣例。
18.
每個Python模塊都有它的__name__,如果它是'__main__',這說明這個模塊被用戶單獨運行,我們可以進行相應的恰當操作。
19.
使用內建的dir函數來列出模塊定義的標識符。標識符有函數、類和變量。

1 >>> import sys
2 >>> dir(sys) # get list of attributes for sys module
3 >>> dir() # get list of attributes for current module
4 >>> a = 5 # create a new variable 'a'
5 >>> dir()
6 >>> del a # delete/remove a name
7 >>> dir()

20.
列表
21.
我們在print語句的結尾使用了一個 逗號 來消除每個print語句自動打印的換行符。
22.
元組
元組和列表十分類似,只不過元組和字符串一樣是 不可變的 即你不能修改元組。
#Filename:using_tuple.py
zoo = ('wolf','elephant','penguin')
print 'Number of animals in the zoo is',len(zoo)

new_zoo = ('monkey','dolphin',zoo)
print 'Number of animals in the new zoo is',len(new_zoo)
print 'All animals in new zoo are',new_zoo
print 'Animals brought from old zoo are',new_zoo[2]
print 'Last animal brought from old zoo is',new_zoo[2][2]

output:
Number of animals in the zoo is 3
Number of animals in the new zoo is 3
All animals in new zoo are ('monkey', 'dolphin', ('wolf', 'elephant', 'penguin'))
Animals brought from old zoo are ('wolf', 'elephant', 'penguin')
Last animal brought from old zoo is penguin
如果你想要的是一個包含項目2的元組的時候,你必須在第一個(唯一一個)項目后跟一個逗號,你應該指明singleton = (2 , )。
23.
元組最通常的用法是用在打印語句中
age = 22
name = 'Swaroop'

print '%s is %d years old' % (name, age)
print 'Why is %s playing with that python?' % name
24.
字典
字典是dict類的實例/對象
鍵值對在字典中以這樣的方式標記:d = {key1 : value1, key2 : value2 }。注意它們的鍵/值對用冒號分割,而各個對用逗號分割,所有這些都包括在花括號中。
記住字典中的鍵/值對是沒有順序的。如果你想要一個特定的順序,那么你應該在使用前自己對它們排序。
#Filename:using_dict.py

#'ab' is short for 'a'ddress 'b'ook

ab={    'Swaroop'   :   'swaroopch@byteofpython.info',
        'Larry'     :   'larry@eall.org',
        'Matsumoto' :   'matz@ruby-lang.org',
        'Spammer'   :   'spammer@hotmail.com'   #The last para has no ','
    }

print "Swaroop's address is %s" % ab['Swaroop']

#Adding a key/value pair
ab['Guido'] = 'guido@python.org'

#Deleting a key/value pair
del ab['Spammer']

print '\nThere are %d contacts in the address-book\n'%len(ab)
for name,address in ab.items():
    print 'Contact %s at %s'%(name,address)

if 'Guido' in ab:#OR ab.has_key('Guido')
    print "\nGuido's address is %s"%ab['Guido']
25.
序列
列表、元組和字符串都是序列,但是序列是什么,它們為什么如此特別呢?序列的兩個主要特點是索引操作符和切片操作符。
序列的神奇之處在於你可以用相同的方法訪問元組、列表和字符串。

# Filename: seq.py

shoplist = ['apple', 'mango', 'carrot', 'banana']

# Indexing or 'Subscription' operation
print 'Item 0 is', shoplist[0]
print 'Item 1 is', shoplist[1]
print 'Item 2 is', shoplist[2]
print 'Item 3 is', shoplist[3]
print 'Item -1 is', shoplist[-1]
print 'Item -2 is', shoplist[-2]

# Slicing on a list
print 'Item 1 to 3 is', shoplist[1:3]
print 'Item 2 to end is', shoplist[2:]
print 'Item 1 to -1 is', shoplist[1:-1]【notice that】
print 'Item start to end is', shoplist[:]【notice that】

# Slicing on a string
name = 'swaroop'
print 'characters 1 to 3 is', name[1:3]
print 'characters 2 to end is', name[2:]
print 'characters 1 to -1 is', name[1:-1]
print 'characters start to end is', name[:]

output:
Item 0 is apple
Item 1 is mango
Item 2 is carrot
Item 3 is banana
Item -1 is banana
Item -2 is carrot
Item 1 to 3 is ['mango', 'carrot']
Item 2 to end is ['carrot', 'banana']
Item 1 to -1 is ['mango', 'carrot']【notice that】
Item start to end is ['apple', 'mango', 'carrot', 'banana']【notice that】
characters 1 to 3 is wa
characters 2 to end is aroop
characters 1 to -1 is waroo
characters start to end is swaroop
26.
參考
當你創建一個對象並給它賦一個變量的時候,這個變量僅僅 參考 那個對象,而不是表示這個對象本身!也就是說,變量名指向你計算機中存儲那個對象的內存。這被稱作名稱到對象的綁定。
#Filename:reference.py
print 'Simple Assignment'
shoplist = ['apple','mango','carrot','banana']
mylist = shoplist #mylist is just another name pointing to the same object

del shoplist[0]

print 'shoplist is',shoplist
print 'mylist is',mylist
# notice that both shoplist and mylist both print the same list without
# the 'apple' confirming that they point to the same object

print 'Copy by making a full slice'
mylist = shoplist[:]# make a copy by doing a full slice
del mylist[0]

print 'shoplist is',shoplist
print 'mylist is',mylist
# notice that now the two lists are different
27.
字符串str類
#!/usr/bin/python
#Filename:str_methods.py

name = 'Swaroop' #This is a string object

if name.startswith('Swa'):
    print 'This string starts with "Swa"'

if 'a' in name:
    print 'This string contains the string "a"'

if name.find('war') != -1:
    print 'This string contains the string "war"'

delimiter = '_*_'
mylist = ['Brazil', 'Russia', 'India', 'China']
print delimiter.join(mylist)
28.
類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱,但是在調用這個方法的時候你不為這個參數賦值,Python會提供這個值。這個特別的變量指對象本身,按照慣例它的名稱是self。
29
__init__
__init__方法在類的一個對象被建立時,馬上運行。這個方法可以用來對你的對象做一些你希望的 初始化 。注意,這個名稱的開始和結尾都是雙下划線。
30.
類與對象的變量
有兩種類型的 域 ——類的變量和對象的變量,它們根據是類還是對象 擁有 這個變量而區分。
類的變量 由一個類的所有對象(實例)共享使用。只有一個類變量的拷貝,所以當某個對象對類的變量做了改動的時候,這個改動會反映到所有其他的實例上。
對象的變量 由類的每個對象/實例擁有。因此每個對象有自己對這個域的一份拷貝,即它們不是共享的,在同一個類的不同實例中,雖然對象的變量有相同的名稱,但是是互不相關的。

#Filename:objvar.py

class Person:
    '''Represents a person.'''
    population = 0

    def __init__(self, name):
        '''Initializes the person's data.'''
        self.name = name
        print '(Initializing %s)'%self.name

        #When this person is created, he/she
        #adds to the population
        Person.population += 1

    def __del__(self):
        '''I am dying'''
        print '%s says bye.'%self.name

        Person.population -= 1

        if Person.population == 0:
            print 'I am the last one'
        else :
            print 'There are still %d people left.'%Person.population

    def sayHi(self):
        '''Greeting by the person.

        Really,that's all it does.'''
        print 'hi,my name is %s.'%self.name

    def howMany(self):
        '''Prints the current population.'''
        if Person.population == 1:
            print 'I am the only person here.'
        else:
            print 'We have %d persons here.'%Person.population

swaroop = Person('Swaroop')
swaroop.sayHi()
swaroop.howMany()

kalam = Person('Abdul Kalam')
kalam.sayHi()
kalam.howMany()

swaroop.sayHi()
swaroop.howMany()

kalam.__del__()
swaroop.__del__()

31.
Python要求:
Python中所有的類成員(包括數據成員)都是 公共的 ,所有的方法都是 有效的 。
只有一個例外:如果你使用的數據成員名稱以 雙下划線前綴 比如__privatevar,Python的名稱管理體系會有效地把它作為私有變量。
公共慣例:
如果某個變量只想在類或對象中使用,就應該以單下划線前綴。而其他的名稱都將作為公共的,可以被其他類/對象使用。記住這只是一個慣例,並不是Python所要求的(與雙下划線前綴不同)。

32.
一個子類型在任何需要父類型的場合可以被替換成父類型,即對象可以被視作是父類的實例,這種現象被稱為多態現象。

33.
Python不會自動調用基本類的constructor,你得親自專門調用它。
我們調用了子類型的tell方法,而不是SchoolMember類的tell方法。可以這樣來理解,Python總是首先查找對應類型的方法,在這個例子中就是如此。如果它不能在導出類中找到對應的方法,它才開始到基本類中逐個查找。

34.
Python提供一個標准的模塊,稱為pickle。使用它你可以在一個文件中儲存任何Python對象,之后你又可以把它完整無缺地取出來。這被稱為 持久地 儲存對象。
還有另一個模塊稱為cPickle,它的功能和pickle模塊完全相同,只不過它是用C語言編寫的,因此要快得多(比pickle快1000倍)。你可以使用它們中的任一個,而我們在這里將使用cPickle模塊。記住,我們把這兩個模塊都簡稱為pickle模塊。
dump()儲存
load()取儲存
35.
處理異常
我們可以使用try..except語句來處理異常。我們把通常的語句放在try-塊中,而把我們的錯誤處理語句放在except-塊中。
對於每個try從句,至少都有一個相關聯的except從句。
你還可以讓try..catch塊關聯上一個else從句。當沒有異常發生的時候,else從句將被執行。
36.
引發異常
你可以使用raise語句 引發 異常。你還得指明錯誤/異常的名稱和伴隨異常 觸發的 異常對象。你可以引發的錯誤或異常應該分別是一個Error或Exception類的直接或間接導出類。
37.
try..finally
假如你在讀一個文件的時候,希望在無論異常發生與否的情況下都關閉文件,該怎么做呢?這可以使用finally塊來完成。注意,在一個try塊下,你可以同時使用except從句和finally塊。如果你要同時使用它們的話,需要把一個嵌入另外一個。
import time
time.sleep(2)
38.
在程序運行的時候,按Ctrl-c中斷/取消程序。
39.
sys模塊
40.
os模塊
這個模塊包含普遍的操作系統功能。如果你希望你的程序能夠與平台無關的話,這個模塊是尤為重要的。即它允許一個程序在編寫后不需要任何改動,也不會發生任何問題,就可以在Linux和Windows下運行。一個例子就是使用os.sep可以取代操作系統特定的路徑分割符。
>>> import os
>>> str = 'Path'
>>> print os.getenv(str)
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;E:\Java\jdk1.6.0_21\bin;C:\Python27;

下面列出了一些在os模塊中比較有用的部分。它們中的大多數都簡單明了。
os.name字符串指示你正在使用的平台。比如對於Windows,它是'nt',而對於Linux/Unix用戶,它是'posix'。
os.getcwd()函數得到當前工作目錄,即當前Python腳本工作的目錄路徑。
os.getenv()和os.putenv()函數分別用來讀取和設置環境變量。
os.listdir()返回指定目錄下的所有文件和目錄名。
os.remove()函數用來刪除一個文件。
os.system()函數用來運行shell命令。
os.linesep字符串給出當前平台使用的行終止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
os.path.split()函數返回一個路徑的目錄名和文件名。
os.path.isfile()和os.path.isdir()函數分別檢驗給出的路徑是一個文件還是目錄。類似地,os.path.existe()函數用來檢驗給出的路徑是否真地存在。

41.
特殊方法:
__init__(self,...) 這個方法在新建對象恰好要被返回使用之前被調用。
__del__(self) 恰好在對象要被刪除之前調用。
__str__(self) 在我們對對象使用print語句或是使用str()的時候調用。
__lt__(self,other) 當使用 小於 運算符(<)的時候調用。類似地,對於所有的運算符(+,>等等)都有特殊的方法。
__getitem__(self,key) 使用x[key]索引操作符的時候調用。
__len__(self) 對序列對象使用內建的len()函數的時候調用。

42.
單語句塊:[butuijianshiyong
if True: print 'Yes'

43.
列表綜合
通過列表綜合,可以從一個已有的列表導出一個新的列表。例如,你有一個數的列表,而你想要得到一個對應的列表,使其中所有大於2的數都是原來的2倍。對於這種應用,列表綜合是最理想的方法。

44.
在函數中接收元組和列表
當要使函數接收元組或字典形式的參數的時候,有一種特殊的方法,它分別使用*和**前綴。這種方法在函數需要獲取可變數量的參數的時候特別有用。
變量前有*前綴,所有多余的函數參數都會作為一個元組
變量前有**前綴,所有多余的函數參數都會作為一個字典的鍵/值對。

45.
lambda形式
lambda語句被用來創建新的函數對象,並且在運行時返回它們。
lambda需要一個參數,后面僅跟【單個表達式】作為函數體,而表達式的值被這個新建的函數返回。

46.
exec語句
exec語句用來執行儲存在字符串或文件中的Python語句。
exec 'print "Hello World"'

eval語句
eval語句用來計算存儲在字符串中的有效Python表達式。
eval('2*3')

assert語句
assert語句用來聲明某個條件是真的。例如,如果你非常確信某個你使用的列表中至少有一個元素,而你想要檢驗這一點,並且在它非真的時候引發一個錯誤,那么assert語句是應用在這種情形下的理想語句。

repr函數
repr函數用來取得對象的規范字符串表示。反引號(也稱轉換符)可以完成相同的功能。
repr函數和反引號用來獲取對象的可打印的表示形式。你可以通過定義類的__repr__方法來控制你的對象在被repr函數調用的時候返回的內容。

>>> i = []
>>> i.append('item')
>>> `i`
"['item']"
>>> repr(i)
"['item']"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM