Python 定義函數


函數是帶名稱的代碼塊,用於完成具體的工作,當我們需要在程序中多次執行同一任務時,會產生大量的重復代碼

我們可以將重復代碼定義為函數,這樣每次執行任務時,只需要調用該函數即可

定義函數語法:

def functionname(parameters):
    """函數文檔"""
    statement
    return [expression]

1 定義函數實例

1.1 定義無參數函數

下面定義一個不含參數的歡迎函數:

def greet_user():
    print('Welcome!')


greet_user()

執行結果:

該函數沒有定義參數,所以引用的時候也不需要輸入參數,直接以函數名引用即可

1.2 定義有參數函數

下面定義一個含參數的歡迎函數:

def greet_user(user):
    print('Hello,%s!' % user)


greet_user('Jack')

執行結果:

該函數定義了參數,所以調用的時候必須輸入參數

當函數有多個參數時,可以通過位置給參數賦值,但位置不可靠,建議以'參數名=參數'鍵值對的形式賦值,這樣參數的位置就不影響賦值

1.3 給參數指定默認值

定義函數時,可以給參數指定默認值,這樣在調用函數時,如果給參數指定值,參數就使用指定的值,否則就使用默認值

def self_introduction(name, country='China'):
    introduction = 'My name is %s,I come from %s.' % (name, country)
    print(introduction)
    return introduction


self_introduction(name='張無忌')
self_introduction(name='成昆', country='Japan')

結果如下:

第一次調用時,沒有指定參數country的值,所以使用了默認值;第二次調用時,則使用了指定的參數值

默認參數必須指向不可變的對象

def add_end(list1=[]):
    list1.append('1')
    return list1


print(add_end())
print(add_end())
print(add_end())

代碼運行結果是:

原因:函數在定義時,默認參數list1所指定的地址已經確定,而list1是一個list,所以每次調用該函數時,如果改變了列表的內容,則下次調用時,默認參數的內容就會改變

如果確實需要指定一個空的對象,可指定默認值是None,然后在函數內部對參數值判斷

1.4 定義可變參數

可變參數:就是傳入的參數個數是可變的,可以是1個、2個到任意個,還可以是0個

定義語法:def function(arg,*args):

在函數調用時,*會以單個元素的形式解包一個元祖,使其成為獨立的參數

def sum_new(*numbers):
    total = 0
    for n in numbers:
        total = total + n * n
    return total


print(sum_new())
print(sum_new(5))
a = [1, 2, 3]
print(sum_new(*a)) # 將list or tuple做為參數時,加一個*解析為可變參數

結果如下:

1.5 關鍵字參數

**kwargs表示關鍵字參數,接收的是dict

def sum_new(year, **users):
    print(year, users)


sum_new(2021, a=1, b=2)

結果如下:

總結:參數的定義順序為:必選參數-->默認參數-->可變參數-->關鍵字參數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM