python基礎 第六章 函式

2021-10-23 12:50:10 字數 2420 閱讀 5220

使用 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...