使用 def (表示定義函式)語句。
def hello(name):
return 'hello, ' + name + '!'
>>> print(hello('world'))
hello, world!
>>> print(hello('gumby'))
hello, gumby!
給函式編寫文件
def square(x):
'calculates the square of the number x.'
return x * x
訪問函式文件
>>> square.__doc__
'calculates the square of the number x.'
什麼都不返回的函式不包含 return 語句,或者包含 return 語句,但沒有在 return 後面指定值。
這裡使用 return 語句只是為了結束函式:
def test():
print('this is printed')
return
print('this is not')
>>> x = test()
this is printed
>>> print(x)
none #因為return後面沒有指定返回內容,所以返回的是none
關鍵字引數和預設值
def hello_1(greeting, name):
print('{}, {}!'.format(greeting, name))
def hello_2(name, greeting):
print('{}, {}!'.format(name, greeting))
>>> hello_1(name='world', greeting='hello')
hello, world!
>>> hello_2(greeting='hello', name='world')
world, hello!
像這樣使用名稱指定的引數稱為關鍵字引數,主要優點是有助於澄清各個引數的作用。
關鍵字引數最大的優點在於,可以指定預設值。
def hello_3(greeting='hello', name='world'):
print('{}, {}!'.format(greeting, name))
>>> hello_3()
hello, world!
>>> hello_3('greetings')
greetings, world!
>>> hello_3('greetings', 'universe')
greetings, universe!
>>> def foo(): x = 42
...>>> x = 1
>>> foo()
>>> x
1
在這裡,函式 foo 修改(重新關聯)了變數 x ,但當你最終檢視時,它根本沒變。這是因為呼叫 foo 時建立了乙個新的命名空間,供 foo 中的**塊使用。賦值語句 x = 42 是在這個內部作用域(區域性命名空間)中執行的,不影響外部(全域性)作用域內的 x 。在函式內使用的變數稱為區域性變數(與之相對的是全域性變數)。引數類似於區域性變數,因此引數與全域性變數同名不會有任何問題
>>> def combine(parameter): print(parameter + external)
...>>> external = 'berry'
>>> combine('shrub')
shrubberry
#警告 像這樣訪問全域性變數是眾多bug的根源。務必慎用全域性變數。
重新關聯全域性變數(使其指向新值)是另一碼事。在函式內部給變數賦值時,該變數預設為區域性變數,除非你明確地告訴python它是全域性變數。
>>> x = 1
>>> def change_global():
... global x #告知python這個是全域性變數
... x = x + 1
...>>> change_global()
>>> x
2
基線條件(針對最小的問題):滿足這種條件時函式將直接返回乙個值。
遞迴條件:包含乙個或多個呼叫,這些呼叫旨在解決問題的一部分。
計算階乘
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
第六章函式
第六章 函式 重要知識點 1 函式定義的語法形式 資料型別 函式名 形式參數列 關於函式的定義有如下說明。函式的資料型別是函式的返回值型別 若資料型別為void,則無返回值 函式名是識別符號,乙個程式中除了主函式名必須為main外,其餘函式的名字按照識別符號的取名規則可以任意選取。形式引數 簡稱形參...
第六章 函式
示例 使用函式列印菱形 include intprint star int main intprint star int i,j for i 0 i 4 i 定義無參函式 函式名後面的括號中是空的,沒有任何引數,定義無參函式的一般形式為 型別名 函式名 或 型別名 函式名 void 函式體包括宣告部...
第六章 函式 6 1 函式基礎
函式是乙個命名了的 塊,我們通過呼叫函式執行相應的 函式可以有 0 個或多個引數,而且 通常 會產生乙個結果。可以過載函式 同乙個名字可以對應幾個不同的函式 乙個典型的函式 function 定義包括以下幾個部分 編寫函式 val 的階乘是 val val 1 val 2 val val 1 1 i...