iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
自我挑戰組

養爬蟲的人學爬蟲系列 第 5

【Day 5】Python 函數(Function)

  • 分享至 

  • xImage
  •  

閒聊
昨天學習了條件判斷跟迴圈後,今天進入到函數的世界。(๑•̀ㅂ•́)و✧
函數可以分為定義函數和內建函數,前幾天有用過一點點內建的函數,你發現了嗎?
事不宜遲,就進入到今天的內容吧!

函數Function
根據Geeksforgeeks
「Python Functions is a block of statements that return the specific task.
The idea is to put some commonly or repeatedly done tasks together and make a function so that instead of writing the same code again and again for different inputs, we can do the function calls to reuse code contained in it over and over again. 」
以及W3schools
「A function is a block of code which only runs when it is called.
You can pass data, known as parameters, into a function.
A function can return data as a result.」

簡單來說,就是我們需要運行某些程式完成某些事情的時候,或是將經常使用的程式碼寫成一個小單元,就可以呼叫函數(Function)來幫助我們。

  • 定義函數
    使用:def語句,
def function() :
    print('Hello.')
  • 調動(calling)函數
def function() :
    print('Hello.')

function()
#output 
Hello.
  • 回傳函數
    使用 return
def score(x) :
    return x*2

print(score(2))
print(score(3))
print(score(5))
#output
2
6
10
  • pass的用途
    pass會忽略條件,繼續執行程式碼。
for str in 'count' :
    count += 1
    if str == 'o'
        pass
    print(str)
#output
c
o
u
n
t

那既然如此,為什麼要寫呢?
因為會碰到不寫程式碼會錯誤的問題。
比如說,今天定義了一個函數(function),卻還沒實作,如果只放著會造成語法錯誤,這時候就可以用pass防止。

def myfunction() :
    pass

參數

  • 默認參數
    可以預設參數值,注意有設值的參數必須在序列的最後
def power (x, n=2) : # n=2是默認參數
    s =1
    while n > 0 :
        n = n-1
        s = s *x
    return s
print(power(5))
#output 25
  • 可變參數(不定數目參數)
    用在不確定參數有多少的時候,可以使用 *來表示這個參數是可變的。
def sumNumber(*params):
    total = 0
    for param in params:
        total +=param
    return total

print("2個參數: sumNumber(7,4) = %d" % sumNumber(7,4))
print("3個參數: sumNumber(9,6,8) = %d" % sumNumber(9,6,8))
print("2個參數: sumNumber(7,8,13,11) = %d" % sumNumber(7,8,13,11))
#output
2個參數: sumNumber(7,4) = 11
3個參數: sumNumber(9,6,8) = 23    
2個參數: sumNumber(7,8,13,11) = 39
  • 關鍵字參數
    可以使用命名來指定一堆參數中,想指定的對象。
def person (name, age, **know) :  #用**將物件打包成dict
    print('name :',name,'age :', age, 'other :',know)
person('Teresa',20,indentity = 'student')
#output
name : Teresa age : 20 other : {'indentity': 'student'}

變數範圍

  • 全域變數
  • 區域變數
    在下面的範例中,因為var2是全域變數,所以就算上面的scope()沒有也可以讀的到。
    而如果出現依樣名稱的全域變數跟區域變數的時候,會以 全域變數 為優先。
    https://ithelp.ithome.com.tw/upload/images/20220918/201453596S0j0wDA2Y.jpg

常用內建函數(函式)
以下會介紹一些比較常使用到的函數

ex1 = int(22.5) #將22.5轉成整數(無條件捨去)
print(ex1) #output 22

ex2 = float(30) #將30轉成浮點數(小數)
print(ex2) #output 30

ex3 = abs(-5) #取絕對值
print(ex3) #output 5

ex4 = pow(2,3) #取2的3次方
print(ex4) #output 8

ex5 = round(40.72) #四捨五入
print(ex5) #output 41

ex6 = sum([1,2,3,4,5]) #取得總和
print(ex6) #output 10

ex7 = type('str') #取得物件的資料型態
print(ex7) #output <class 'str'>

ex8 = len('str') #回傳物件長度(元素個數)
print(ex8) #output 3

range() #取某一範圍的數

chr() #回傳代表字元之 Unicode 編碼位置為整數 i 的字串

bin() #將變數轉為二進位

oct() #將變數轉成八進位

hex() #將變數轉成十六進位

max()、min() #回傳最大、最小值

open() #開啟檔案(File)

結語
Funciton的範圍比我想像的還大很多,學起來不是一件容易的事情。/images/emoticon/emoticon16.gif
熟練常用的函數後,撰寫的速度又可以提升一點了!

明天!
【Day 6】使用Python處理CSV文件

參考資料
https://www.geeksforgeeks.org/python-functions/
https://www.w3schools.com/python/python_functions.asp
Python入門(二)函數基礎https://allaboutdataanalysis.medium.com/python%E5%85%A5%E9%96%80-%E4%BA%8C-%E5%87%BD%E6%95%B8%E5%9F%BA%E7%A4%8E-93125efd21c
內建函式 https://docs.python.org/zh-tw/3/library/functions.html#len


上一篇
[Day 4] Python 條件判斷、迴圈、其他
下一篇
【Day 6】使用Python處理CSV文件(1/2)
系列文
養爬蟲的人學爬蟲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言