更新於 2024/05/14閱讀時間約 12 分鐘

Python入門-Day7:函數

    定義函數

    在Python中,函數可以通過def關鍵字來定義。定義函數的一般格式如下:

    def 函數名(參數列表):
    函數體

    其中,函數名是函數的名稱,參數列表是用括號括起來的參數,多個參數用逗號分隔。函數體是函數執行的代碼塊,可以包含任意數量的語句。

    例如,下面的代碼定義了一個名為hello的函數,該函數不接受任何參數,並在調用時打印出一條歡迎消息:

    def hello():
    print("歡迎使用本程序!")

    調用函數

    定義完函數後,可以通過函數名來調用函數。調用函數的一般格式如下:

    函數名(參數列表)

    其中,函數名是要調用的函數名稱,參數列表是用括號括起來的參數,多個參數用逗號分隔。如果函數不接受任何參數,則可以省略參數列表。

    例如,下面的代碼調用了上面定義的hello函數:

    hello()

    該代碼將打印出一條歡迎消息。

    函數的參數傳遞

    在 Python 中,函數的參數可以透過兩種方式進行傳遞:位置參數和關鍵字參數。

    入門範例

    位置參數是指按照參數的位置順序傳遞的參數。例如,我們可以定義一個名為 add 的函數,該函數接受兩個位置參數 ab,並返回它們的和:

    def add(a, b):
    return a + b

    我們可以調用該函數並傳遞兩個參數,如下所示:

    result = add(2, 3)
    print(result) # 輸出 5

    在該示例中,我們將參數 2 和 3 按照位置順序傳遞給 add 函數,函數將它們相加並返回它們的和,該和被存儲在變量 result 中,並被打印輸出。

    參數的類型

    • 必填参数
    • 關鍵字参数
    • 默認参数
    • 不定長度参数

    必填参数

    必填参数是指在調用函數時必須傳遞的參數,如果沒有傳遞這些參數,則會報錯。例如,下面的代碼定義了一個名為 add 的函數,該函數接受兩個必填參數 ab,並返回它們的和:

    def add(a, b):
    return a + b

    我們可以調用該函數並傳遞兩個參數,如下所示:

    result = add(2, 3)
    print(result) # 輸出 5

    在該示例中,我們將參數 2 和 3 傳遞給 add 函數,函數將它們相加並返回它們的和,該和被存儲在變量 result 中,並被打印輸出。

    關鍵字參數

    關鍵字參數是指在調用函數時按照參數名稱傳遞的參數。使用關鍵字參數可以讓我們在調用函數時不必考慮參數的順序。例如,下面的代碼定義了一個名為 print_person_info 的函數,該函數接受三個關鍵字參數 nameagegender,並打印出這些參數代表的人物的信息:

    def print_person_info(name, age, gender):
    print("姓名:%s" % name)
    print("年齡:%d" % age)
    print("性別:%s" % gender)

    我們可以調用該函數並傳遞三個關鍵字參數,如下所示:

    print_person_info(name="張三", age=20, gender="男")

    在該示例中,我們將參數 nameagegender 按照參數名稱傳遞給 print_person_info 函數,函數將根據這些參數打印出人物的信息。

    默認参数

    默認參數是指在定義函數時指定的一個默認值,如果在調用函數時沒有傳遞這些參數,則函數將使用這個默認值。例如,下面的代碼定義了一個名為 add 的函數,該函數接受兩個默認參數 ab,並返回它們的和:

    def add(a=0, b=0):
    return a + b

    我們可以調用該函數並不傳遞任何參數,如下所示:

    result = add()
    print(result) # 輸出 0

    在該示例中,我們沒有傳遞任何參數給 add 函數,函數使用了默認值 0 來計算並返回和。

    不定長度參數

    不定長度參數是指在調用函數時可以傳遞任意數量的參數。在 Python 中,有兩種不定長度參數:不定長度位置參數和不定長度關鍵字參數。不定長度位置參數是指在調用函數時可以傳遞任意數量的位置參數,這些參數將被收集到一個元組中。不定長度關鍵字參數是指在調用函數時可以傳遞任意數量的關鍵字參數,這些參數將被收集到一個字典中。例如,下面的代碼定義了一個名為 add 的函數,該函數接受任意數量的位置參數和任意數量的關鍵字參數,並返回它們的和:

    def add(*args, **kwargs):
    result = 0
    for arg in args:
    result += arg
    for kwarg in kwargs.values():
    result += kwarg
    return result

    我們可以調用該函數並傳遞任意數量的位置參數和關鍵字參數,如下所示:

    result = add(1, 2, 3, a=4, b=5)
    print(result) # 輸出 15

    在該示例中,我們傳遞了三個位置參數 1、2 和 3,以及兩個關鍵字參數 ab,函數將這些參數相加並返回它們的和。

    return語句

    return語句用於結束函數的執行並返回一個值。在函數體中,可以使用return語句將值返回給調用方。如果函數沒有return語句,則函數執行完畢後不會返回任何值。

    例如,下面的代碼定義了一個名為add的函數,該函數接受兩個參數ab,並返回它們的和:

    def add(a, b):
    return a + b

    我們可以調用該函數並傳遞兩個參數,如下所示:

    result = add(2, 3)
    print(result) # 輸出 5

    在該示例中,我們將參數2和3傳遞給add函數,函數將它們相加並返回它們的和,該和被存儲在變量result中,並被打印輸出。

    如果函數沒有return語句,則函數執行完畢後不會返回任何值。例如,下面的代碼定義了一個名為say_hello的函數,該函數不接受任何參數,並在調用時打印出一條歡迎消息:

    def say_hello():
    print("歡迎使用本程序!")

    我們可以調用該函數,如下所示:

    say_hello()

    該代碼將打印出一條歡迎消息,但不會返回任何值。

    綜合範例

    def hello(a):
    print(f"{a}:歡迎使用本程序!")

    def add(a, b):
    c = a + b
    return c

    def add2(a=0, b=0):
    c = a + b
    return c

    def add3(*args, **kwargs):
    result = 0
    for arg in args:
    result += arg
    for kwarg in kwargs.values():
    result += kwarg
    return result

    mathNumber = add(b=2, a=1)
    print(mathNumber)
    print(add2(1, 2))
    result = add3(a=1, b=2, c=3, d=4, e=5)
    print(result)
    result = add3(1, 2, 3, 4, 5)
    print(result)

    全域變數和區域變數

    在 Python 中,變數可以分為全域變數和區域變數兩種。

    全域變數是指在函數外部定義的變數,可以在整個程序中使用。區域變數是指在函數內部定義的變數,只能在該函數內部使用。

    當在函數內部定義一個變數時,該變數通常是一個區域變數。如果在函數內部需要使用一個全域變數,可以使用 global 關鍵字來聲明它。

    下面的示例演示了如何在 Python 中使用全域變數和區域變數:

    x = 10 # 定義一個全域變數 x

    def func():
    y = 5 # 定義一個區域變數 y
    global x # 使用 global 關鍵字聲明 x 為全域變數
    x = x + y # 在函數內部使用全域變數 x 和區域變數 y
    print("x =", x) # 輸出全域變數 x 的值

    func() # 調用函數
    print("x =", x) # 輸出全域變數 x 的值

    在該示例中,我們定義了一個全域變數 x 和一個函數 func。函數內部定義了一個區域變數 y,並使用 global 關鍵字聲明變數 x 為全域變數。在函數內部,我們使用全域變數 x 和區域變數 y 進行計算,並將結果存儲在全域變數 x 中。最後,我們分別輸出了全域變數 x 的值。

    調用不同檔案間的函數(副程式的概念)

    在 Python 中,我們可以在一個檔案中定義函數,然後在另一個檔案中調用它。

    為了在不同的檔案之間共用函數,我們需要將函數定義放在一個單獨的檔案中,然後在其他檔案中通過 import 關鍵字導入該檔案。

    下面是一個簡單的範例,展示了如何在兩個不同的檔案中共用一個函數:

    my_module.py 檔案中定義一個函數:

    def greet(name):
    print("Hello, " + name + "!")

    main.py 檔案中使用該函數:

    import my_module

    my_module.greet("John")

    在這個範例中,my_module.py 檔案定義了一個名為 greet 的函數,該函數接受一個參數 name,並打印出一條問候語。在 main.py 檔案中,我們使用 import 關鍵字導入 my_module 檔案,然後使用 my_module.greet 調用 greet 函數,並傳遞一個參數 "John"

    在這個例子中,我們將 greet 函數和 main 函數定義在不同的檔案中,並通過 import 關鍵字將它們連接在一起。這樣,我們就可以在 main.py 檔案中使用 greet 函數了。

    總和範例

    toy.py

    def hello(a):
    '''
    This is a function to say hello to a person.
    '''
    print(f"{a}:歡迎使用本程序!")

    def add(a, b):
    '''
    This is a function to add two numbers.
    '''
    c = a + b
    return c

    def add2(a=0, b=0):
    '''
    This is a function to add two numbers.
    '''
    c = a + b
    return c

    def add3(*args, **kwargs):
    '''
    This is a function to add numbers.
    '''
    result = 0
    for arg in args:
    result += arg
    for kwarg in kwargs.values():
    result += kwarg
    return result

    main.py

    import toy

    mathNumber = toy.add(b=2, a=1)
    print(mathNumber)
    print(toy.add2(1, 2))
    result = toy.add3(a=1, b=2, c=3, d=4, e=5)
    print(result)
    result = toy.add3(1, 2, 3, 4, 5)
    print(result)
    print(toy.hello("小明"))
    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.