• 沒有找到結果。

Python 04

N/A
N/A
Protected

Academic year: 2021

Share "Python 04"

Copied!
26
0
0

加載中.... (立即查看全文)

全文

(1)

Python

程式設計

(2)

Outline

u

內建函數

(3)

呼叫函式的基本方法

• 範例:

print

(

“Hello, world”

)

Function_name

(

Arg1, Arg2, …

)

命名的方法如同變數一般

給予引數

(4)

內建函數(Build-in Function)

u 內建函式可以直接使用

u 內建函式有哪些:

u dir( __builtins__ ) u iterator: range()

u Length: len()

u Sort: sorted() v.s. object.sort()

u 轉換型態或建立物件 u int() u str() u float( ) u list() u set() u ...

(5)

內建函數(Build-in Function)

Built-in Functions

abs() dict() help() min() setattr()

all() dir() hex() next() slice()

any() divmod() id() object() sorted()

ascii() enumerate() input() oct() staticmethod()

bin() eval() int() open() str()

bool() exec() isinstance() ord() sum()

bytearray() filter() issubclass() pow() super()

bytes() float() iter() print() tuple()

callable() format() len() property() type()

chr() frozenset() list() range() vars()

classmethod() getattr() locals() repr() zip()

compile() globals() map() reversed() __import__()

complex() hasattr() max() round()

(6)

⾃自訂函數

• Programmer可以⾃自⾏行設計與定義函式

• ⾃自定義函式的⽅方法

• 必

先定義⽽而後使⽤用

def

Function_name

(

Pra1, Pra2,…

):

suite

任何 suite必定縮排!

(7)

函數的命名

• 函數之命名慣例:

• GUI函式習慣以

駝峰式(Camel-Case)

命名

• ⼀一般函式習慣以⼩小寫或輔以

底線

命名

• 避免⾮非慣⽤用縮寫

• 函數之命名應有意義, 且須指出函數之⺫⽬目的或回傳之資料,

⽽而⾮非達成⺫⽬目的所使⽤用的⽅方法

(8)

參數與引數

• 參數與引數的差別 (很容易混淆)

• Parameter

/ 參數

• 函式運⾏行時之參考 • 放在函式的標記式, ⽤用來說明這個函式, 當它被呼叫時必須接收到 什麼樣的資料

• Argument

/ 引數

• ⽤用以引發函式 • 當你呼叫函式的時候, 你可以放在括號內的東⻄西

(9)

傳遞引數給參數 1/2

• 以引數呼叫函式而將其值賦予參數以供函式(副程式)運行參考

Function_name

(

Arg1, Arg2, …

)

def

Function_name

(

Pra1, Pra2, …

)

• 依序一個對一個(只是一個丟接遊戲!), 這種依參數順序給定的引數

稱為

positional argument

(10)

傳遞引數給參數 2/2

• 傳遞的動作可以想像成若干個賦值運算

Function_name

(

Arg1, Arg2, …

)

def

Function_name

(

Pra1, Pra2, …

)

• Pra1 = Arg1 • Pra2 = Arg2

• …

(11)

函式之回傳值

u

⼀一個函式於運⾏行完畢之後可以回傳結果(也可以忽

略不回傳)

u

當程式運⾏行到return陳述句時將會

無條件直接離

(結束)函式

並回傳結果

u

Return Statement

:

u

回傳值可以為:

u

單⼀一的值或物件

u

多個值或物件所構成的 tuple

u

當未使⽤用return陳述句時,預設將會回傳None

(12)

參數預設值 1/2

• 參數預設值可減少

function call

撰寫上面的麻煩

• 即便呼叫函式時沒有給定引數,函式依然有參考值(

預設參數值

)

• 問題思考:

• 如果有的有給引數有的沒有呢? • 如果有的有參數預設值有的沒有呢?

(13)

參數預設值 2/2

Rule :當自定義函式時

• 無預設值之參數在前 • 有預設值之參數在後 • 原因: 引數之傳遞是依序的!

Rule: 當有預設值之參數仍有引數之分配時, 引數值將會取代預設值

(14)

函數的範例 EX04_01.py

u 將 for 迴圈範例 EX02_05.py 改寫成函式的寫法。

u 觀察涵式的回傳值

u 改寫成具有回傳值的版本

(15)

參數預設值

• 參數預設值可減少

function call

撰寫上面的麻煩

• 即便呼叫函式時沒有給定引數,函式依然有參考值(

預設參數值

)

def

Function

(

Pra1=value1, Pra2=value2, …

):

Rule :當自定義函式時

• 無預設值之參數在前 • 有預設值之參數在後

• 原因: 引數之傳遞是依序的!

Rule: 當有預設值之參數仍有引數之分配時, 引數值將會取代預設值

(16)

利用參數名稱之函式呼叫

• 呼叫函式時不使用參引數依序一對一對應傳遞,

換成

以參數名稱來進行傳遞與函式之呼叫

(名稱呼叫)

• 這種依名稱傳遞的引數稱為

keyword argument

Function_name

(

b=value1, a=value2, …

)  

def

Function_name

(

a, b, …

):

(17)

參數預設值範例

u 函數的預設值如果是(mutable)可變類型的物件,並且在函 式執行期間修改了這個可變物件,此預設值的物件也會因 此跟著改變,之後再次呼叫同個函式時將會用改變後的值 為預設值。 u 參考範例 EX04_02.py

(18)

變數的有效範圍

u 每個變數有其有效範圍, 也就是被認定(認識)的範圍, 一般 定義在函式外的變數其範圍是一整個模組, 又稱全域變數(全域 指的是整個模組) u 被定義在一個函式中的變數稱為區域變數, 其範圍是一整個 函式 u 以上兩種範圍都必須從變數定義被python看到開始算起 u 當區域變數與全域變數名稱相同產生衝突時, 區域內以區域 變數為主,區域外以全域變數為主

(19)

變數的有效範圍

u 範例 EX04_01.py 中,summation函式中的變數 total, i 皆

為區域變數(local variable)。

(20)

不定個數形式的參數

— 函數 (function) 可以有不定個數的參數 (parameter),也就 是可以在參數列 (paramenter list) 提供任意長度的參數個 數 — *arguments就是參數識別字 (identifier) 前面加上一個星 號,當成一組序對 (tuple) — **keywords 參數識別字前面加上兩個星號,當成一組字典 (dictionary)

(21)

不定個數形式的參數範例

u EX04_03.py u EX04_04.py

u 在傳遞引數時,可用* 將序列型態物件解開傳入

(22)

函數 yield產生器

u 函數 (function) 中若使用 return ,函數會直接回傳數值

(value) ,也隨之終止函數執行。若使用另一個關鍵字

(keyword)yield,可使函數產生數值,而不會結束函數執

(23)

使用yield模擬range()函式

(24)

全域變數

u •有的時候在函式中我們希望改變或存取的是全域變數時, 為了確認使用到正確的全域變數, 而非定義一個新的區域變 數時, 我們需要利用 global敘述句來告知 python 某變數名 稱指稱的是全域變數

global

variablename

(25)

全域變數範例

(26)

Homework 4

u 試以 EX02_07.py的程式碼為基礎,撰寫三個函數 u list_zip(city) u 傳入值為城市名稱可列出所有某城市裡面所有區域的郵遞區號 ex. 呼叫 list_zip("台北市"),則列出所有台北市內所有區域的郵 遞區號 u area_to_zip(area) u 傳入值為區域名稱回傳此區域的郵遞區號 u ex. 呼叫 area_to_zip("信義區"),回傳 201 u zip_to_area(zip)

u 傳入值為郵遞區號回傳區域名稱

u ex. 呼叫 area_to_zip(106) ,回傳 "大安區"

上傳網址:

參考文獻

相關文件

結構化程式設計 是設計一個程式的一個技巧,此技巧就

 區域網路 (Local Area Network, LAN) 為規模最小 的網路, 範圍通常在 2 公里內, 例如:同一層樓的 辦公室, 或是同一棟建築物內的網路。...

對於每一個重數為 的特徵值,求一組有k個線性.

2-1-1 複變數的概念.

Cauchy 積分理論是複變函數論中三個主要組成部分之一, 有了 Cauchy 積分理論, 複變 函 數論才形成一門獨立的學科, 並且導出一系列在微積分中得不到的結果。 我們先從 Cauchy

(三) 變率與微分、 求和與積分: “變率” 與 “求和” 是函數的兩種定量型 (quantitative) 的基本性質。 但是它們的定義本身就是理論的起點, 有如當年

從幾何圖形上來看,所有指數函數,在 (0,1) 的切線斜率恰 好為一的函數也只有惟一一個,因此

All rights reserved.. 1