0%

今天要來看 Python 的物件導向,其實我在大二上的物件導向課的內容都快忘光光了,所以這個篇文章可能不太詳細。

什麼是物件

物件裡面有 data (通常為變數,稱為屬性) 與 方法or動作 (通常為 function),代表一個具體的東西。

其實我覺得很難解釋和表達這個名詞,我是這麼想的,就像我,我是一個人,人一定有身高體重,然後人會走路和跳舞等等的動作,我就是一個物件的概念。身高體重就是 data,動作就是 function。那 class 就是定義人這個名詞,則是比較抽象的。

或者像是 Python 裡面 String 這個變數型態就是一個 class,而我們創建的字串(str(96))就是一個物件,它的屬性就是字串內容('96')和 type ,而方法就是它裡面內建的 function。

好吧,有解釋跟沒解釋一樣,等到我比較了解再來更改好了。

閱讀全文 »

這篇我們來看看檔案的處理

Open & close

我們要做檔案讀寫時,一定要相進行開啟檔案,我們使用 open()

fileobj = open(filename,mode=’r’,encoding=None)

  1. fileobj : 是接 open( ) return 的檔案物件
  2. mode: 來指定檔案權限
  3. encoding: 編碼
    閱讀全文 »

例外處理

當我們寫程式時,會發生一些錯誤,像是 list 超出範圍、 open file 卻找不到檔案等等。
這些電腦都會進行報錯,但是我們不想中斷程式,想繼續進行時該怎麼辦呢?

這時候我們就使用 try-exccept 語法。

舉個例子: 我們進行 open example.txt,但是事實上並沒有這個檔案會發生什麼事?

1
# -*- coding: utf-8 -*-
2
3
file = open('example.txt','r')
4
---------------執行結果---------------
5
    file = open('example.txt','r')
6
FileNotFoundError: [Errno 2] No such file or directory: 'example.txt'

如預期的,電腦告訴我們找不到 example.txt 這個檔案。

閱讀全文 »

什麼是命名空間

每一個 function or class 等等都有定義自己的命名空間。
假如你在 fun1( ) 有一個 variable 叫做 X,又在 fun2( ) 裡面有個 variable 也叫做 X,
雖然名稱一樣,但是他們對應的卻是不一樣的東西,而且也不跨界使用。
來看看例子:

1
def print_animal():
2
    animal = 'cat'
3
    print(animal)
4
5
def print_cat():
6
    print(animal)
7
8
if __name__ =='__main__':
9
    print_animal()
10
    print_cat()
11
---------------執行結果---------------
12
line 6, in print_cat
13
    print(animal)
14
NameError: name 'animal' is not defined

電腦會報錯!,因為 print_cat() 沒有定義 animal 這個 variable
閱讀全文 »

Function 定義

在 Python function 以 def來定義

1
def printHello(name = 'Bob'):
2
    """如果是Jack 印出 hello world"""
3
    if name == 'Jack':
4
        print('hello world!')
5
    else:
6
        print('who are you?')
7
    return 0
8
9
printHello()
10
printHello('Jenny')
11
printHello('Jack')
12
---------------執行結果---------------
13
who are you?
14
who are you?
15
hello world!
閱讀全文 »

什麼是 Comprehensions(生成式)

我們可以用 for Loop 建立一個 1~5 的 list

1
number_list = []
2
for number in range(0,6):
3
    number_list.append(number)

但是,要建立比較符合 Python 風格的方式,就是使用 Comprehensions。
用法如下:

[ 輸入 list 的值 for 項目 in 可跌代的資料結構 ]

閱讀全文 »

上一篇我們談到 while ,這篇我們就來談 for

我們把 while迴圈 的找偶數的程式碼改成用 for 實做

1
numbers = [1,23,5]
2
3
for number in numbers:
4
    if number % 2 == 0:
5
        print('Find even number',number)
6
        break
7
else:
8
    print('No even number found')
9
---------------執行結果---------------
10
No even number found

閱讀全文 »