Python 學習筆記10 函數

函數其實一段帶名字的代碼段,咱們能夠根據代碼段,重複執行某一段代碼段,或者有條件的執行某一段代碼段。編程

將一段代碼定義成函數後,咱們能夠很方便的根據本身的需求,隨時調用該代碼段。遇到需求變化的時候,只須要修改該函數,就能夠知足需求,不須要處處修改特定的代碼。編程語言

好比咱們定義一個print hello的函數:ide

 

def say_hello():
    print("Hello!")

say_hello()
'''
Hello!
'''

 

咱們能夠看到,咱們使用def來定義函數, 以冒號結尾。 輸入回車後,ide會自動縮進,縮進後的代碼就是函數的定義體。定義完函數體後,咱們一般空一行表示定義完函數。函數

咱們直接輸入函數名,便可調用函數。ui

咱們還能夠向函數傳遞「消息」,在編程語言中咱們稱之爲參數。好比咱們修改函數,能夠向其傳遞一我的名,並輸出想要語句。spa

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

say_hello('Ralf')
'''
Ralf, Hello!
'''

 

經過上面代碼,咱們能夠看到,咱們從新修改了函數,增長了一個參數 name, 修改了函數體。這樣咱們能夠根據本身的須要,向函數傳遞消息,並輸出想要的結果。code

函數定義中的參數,咱們一般稱之爲 形參,好比上述例子中的變量name, 這個變量只在函數定義中使用,並不具備實際的值。咱們在調用函數時,傳遞的消息或者說變量,咱們稱之爲實參,是咱們「實際「上想要使用的參數或者數值,變量。blog

一般狀況下,咱們必須按照事先定義好的參數,依次傳遞給函數體,才能正確得出想要的結果。ci

def say_hello(name, city):
    print(name + ", Welcome to " + city + "!" )

say_hello('Ralf', "Shanghai")
''' Ralf, Welcome to Shanghai! '''
def say_hello(name, city):
    print(name + ", Welcome to " + city + "!" )

say_hello('Shanghai', "Ralf")
''' Shanghai, Welcome to Ralf! '''
def say_hello(name, city):
    print(name + ", Welcome to " + city + "!" )

say_hello('Ralf')
''' Traceback (most recent call last): File "D:/PythonStudy/test.py", line 31, in <module> say_hello('Ralf') TypeError: say_hello() missing 1 required positional argument: 'city' '''

 

咱們可使用關鍵字的形式來規避上面例子中出現的錯誤,即在調用函數時,使用 形參 = value的方式來調用函數:it

def say_hello(name, city):
    print(name + ", Welcome to " + city + "!" )

say_hello(city = "Shanghai", name = 'Ralf')
'''
輸出:
Ralf, Welcome to Shanghai! '''

 

在定義函數時,咱們也能夠定義一些參數默認值,這樣在調用,若是給了實參,函數就使用實參,沒有給值,就是用默認值。

def say_hello(name, city = "Shanghai"):
    print(name + ", Welcome to " + city + "!" )

# 使用默認值
say_hello("Ralf")

#使用實際值
say_hello("Rachel", "Beijing")
''' 輸出: Ralf, Welcome to Shanghai! Rachel, Welcome to Beijing! '''

 

 

返回值:

函數不只能夠接受外部傳送的變量參數,也能夠輸出一個返回值給調用者。

def say_hello(name, city = "Shanghai"):
    return name + ", Welcome to " + city + "!"


out_message = say_hello("Rachel", "Beijing")
print(out_message)

'''
輸出:
Rachel, Welcome to Beijing!
'''

 返回一個列表:

def born_city(name, city = "Shanghai"):
    return [name, city]

out_message = born_city("Rachel", "Beijing")
print(type(out_message))
print(out_message)

'''
輸出:
<class 'list'>
['Rachel', 'Beijing']
'''

 

返回一個字典:

def born_city(name, city = "Shanghai"):
    return {'name': name, 'city': city}

out_message = born_city("Rachel", "Beijing")
print(type(out_message))
print(out_message)

'''
輸出:
<class 'dict'>
{'name': 'Rachel', 'city': 'Beijing'}
'''

 

傳遞任意數量的實參,有時候咱們不肯定,實際參數有幾個,能夠能是一個也多是多個,要怎麼定義哪。咱們能夠在形參前面加一個星號,表示這個參數能夠是多個:

def say_hello(*names):
    print(names)

out_message = say_hello("Rachel", "Ralf", "Terry")
print(out_message)

'''
輸出:
('Rachel', 'Ralf', 'Terry')
'''

 

注意函數返回了一個元組,即使函數只輸入一個參數,返回的也是一個元組。

結合實參和任意數量的實參:

def say_hello(words, *names):
    for name in names:
        print(words + ", " + name)

out_message = say_hello("hello", "Rachel", "Ralf", "Terry")
print(out_message)

'''
輸出:
hello, Rachel
hello, Ralf
hello, Terry
'''

 

使用任意數量的關鍵字實參。有時候咱們須要接受任意數量的實參,可是不知傳遞給函數的會是什麼樣的信息。在這種狀況下,咱們能夠將函數編寫成接受任意數量的 鍵值對,即字典的形式。方式爲加兩個冒號 **dict:

def pepole_info(name, sex, **others):
    print(name + ": "+ sex )
    for key, value in  others.items():
        print(key + ": " + value)

out_message = pepole_info("Ralf", "male", height = "175", hobby = "football")
print(out_message)

'''
輸出:
Ralf: male
height: 175
hobby: football
'''
相關文章
相關標籤/搜索