Python def用法:定義函數並實現代碼復用

一、什麼是函數

函數是指為了完成特定任務、可以重複使用的一段程序代碼,函數可以接受輸入參數和返回輸出結果,是編程語言中最基本的代碼模塊之一。

在Python中,使用「def」關鍵字定義,後面跟函數名和一對圓括號,圓括號中可以包括若干個參數。函數語法如下所示:

def func_name(arg1,arg2,...,argn):
    statement1
    statement2
    ...
    return [expression]

其中,def代表函數定義關鍵字;func_name為函數名,命名規則和變量命名規則相同;arg1~argn為函數參數,用逗號隔開;statement1和statement2為函數體,語句塊可以包含零個或多個語句;return語句用來返回函數的結果,也可以省略。

二、函數的使用

函數的使用可以分為三個部分:函數的定義、函數的調用、函數的返回值。

1.函數的定義

在Python中定義一個函數,只需要使用def關鍵字即可,例如,定義一個求兩個數之和的函數,代碼如下:

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

2.函數的調用

調用函數時,需要指定函數名,並且傳入必要的參數。例如,調用上述函數sum()計算3+4的結果,代碼如下:

c = sum(3, 4)
print(c)

執行結果為:

7

3.函數的返回值

函數執行完後,可以通過return語句返回一個值或一組值。例如,定義一個函數檢查年份是否為閏年:

def is_leap(year):
    if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
        return True
    else:
        return False

調用函數判斷2000年是否是閏年:

b = is_leap(2000)
print(b)

執行結果為:

True

三、函數的參數傳遞

在Python中,函數的參數傳遞有兩種方式:傳值和傳址。

1.傳值

傳值指的是將參數的值複製一份傳遞給函數,函數內部的操作不會影響調用函數時傳遞的參數本身。例如:

def change_num(num):
    num += 1
    print("內部:num=", num)
    
a = 1
change_num(a)
print("外部:a=", a)

執行結果為:

內部:num= 2
外部:a= 1

可以看到在函數內部修改num的值對參數a沒有任何影響。

2.傳址

傳址指的是將參數的地址傳遞給函數,函數內部操作會影響調用函數時傳遞的參數本身。Python中默認情況下,所有參數都是傳址。

例如,定義一個將列表中的元素加1的函數:

def add_one(lst):
    for i in range(len(lst)):
        lst[i] += 1
    print("內部:lst=", lst)
    
b = [1, 2, 3]
add_one(b)
print("外部:b=", b)

執行結果為:

內部:lst= [2, 3, 4]
外部:b= [2, 3, 4]

在函數內部修改了列表lst,對參數b也產生了影響。

四、函數的參數類型

Python中的函數參數類型可以分為四種:位置參數、默認參數、可變參數和關鍵字參數。

1.位置參數

位置參數是最常用的一種參數類型,是指按照函數定義順序傳遞參數,例如:

def foo(x, y):
    print("x=", x)
    print("y=", y)

foo(1, 2)

輸出結果為:

x= 1
y= 2

2.默認參數

默認參數是指在函數定義時,給參數設置一個默認值。調用函數時,如果不傳該參數,則使用默認值。例如:

def foo(x, y=2):
    print("x=", x)
    print("y=", y)

foo(1)
foo(1, 3)

執行結果為:

x= 1
y= 2
x= 1
y= 3

3.可變參數

可變參數是指傳入的參數個數是可變的。在函數定義時使用*args表示可變參數,例如:

def foo(*args):
    for arg in args:
        print(arg)

foo(1, 2, 3)

執行結果為:

1
2
3

4.關鍵字參數

關鍵字參數是指在函數調用時,使用形如key=value的方式進行調用。在函數定義時使用**kwargs表示關鍵字參數,例如:

def foo(**kwargs):
    for key, value in kwargs.items():
        print(key, "=", value)

foo(name="Alice", age=18)

執行結果為:

name = Alice
age = 18

五、函數的嵌套調用

函數的嵌套調用是指在一個函數中調用另一個函數。例如,定義一個求兩個數平方和的函數sum_of_squares(),並在另一個函數foo()中調用此函數:

def sum_of_squares(x, y):
    return x**2 + y**2

def foo(a, b):
    return sum_of_squares(a, b)

c = foo(3, 4)
print(c)

執行結果為:

25

六、總結

函數是Python語言中非常重要的一種結構,可以讓程序變得更加模塊化和可復用。Python中通過def關鍵字定義函數,可以使用位置參數、默認參數、可變參數和關鍵字參數進行函數參數傳遞,多種參數形式使得函數更加靈活。通過函數的嵌套調用,可以大大提高編程效率。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/231649.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 01:05
下一篇 2024-12-11 01:05

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在着手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29

發表回復

登錄後才能評論