python教程(六)函式

2021-09-20 06:49:49 字數 1312 閱讀 1851

函式定義就是對使用者自定義函式的定義。(參見 標準型別層級結構 一節)

函式定義是一條可執行語句。 它執行時會在當前區域性命名空間中將函式名稱繫結到乙個函式物件(函式可執行**的包裝器)。 這個函式物件包含對當前全域性命名空間的引用,作為函式被呼叫時所使用的全域性命名空間。

關鍵字def引入乙個函式 定義。它必須後跟函式名稱和帶括號的形式引數列表。構成函式體的語句從下一行開始,並且必須縮排。函式體的第乙個語句可以(可選的)是字串文字;這個字串文字是函式的文件字串或 docstring 。

函式的 執行 會引入乙個用於函式區域性變數的新符號表。更確切地說,函式中的所有變數賦值都將值儲存在本地符號表中;而變數引用首先在本地符號表中查詢,然後在封閉函式的本地符號表中查詢,然後在全域性符號表中查詢,最後在內建符號表中查詢。所以全域性變數不能直接在函式中賦值(除非使用global命名),儘管可以引用它們。

在函式被呼叫時,實際引數(實參)會被引入被呼叫函式的本地符號表中;因此,實參是通過 按值呼叫 傳遞的(其中 值 始終是物件 引用 而不是物件的值)。[1] 當乙個函式呼叫另外乙個函式時,將會為該呼叫建立乙個新的本地符號表

函式定義會把函式名引入當前的符號表中。函式名稱的值具有直譯器將其識別為使用者定義函式的型別。這個值可以分配給另乙個名稱,該名稱也可以作為乙個函式使用。這用作一般的重新命名機制

事實上,即使沒有return語句的函式也會返回乙個值,儘管它是乙個相當無聊的值。這個值稱為none(它是內建名稱)。

可以用lambda關鍵字來建立乙個小的匿名函式。這個函式返回兩個引數的和:lambda a, b: a+b。lambda函式可以在需要函式物件的任何地方使用。它們在語法上限於單個表示式。從語義上來說,它們只是正常函式定義的語法糖。與巢狀函式定義一樣,lambda函式可以引用包含範圍的變數

上面的例子使用乙個lambda表示式來返回乙個函式。另乙個用法是傳遞乙個小函式作為引數:

上例用sort排序,lambda返回pairs的第二個元素。

python教程(六)之函式(1 抽象)

函式是什麼?函式是能為你解決問題的方法,定義的時候很具體 但你使用起來卻很抽象,因為使用時看不到具體方法 fibs 0 1 for a in range 8 2 fibs 1 print fibs 0,1,1,2,3,5,8,13,21,34 def fibs index a 0 1 for b i...

python函式變數教程 Python 函式變數

函式變數 函式名是變數,它在建立函式時繫結乙個函式 示例 def f1 print f1函式被呼叫 f2 f1 兩個變數同時繫結乙個函式 f2 f1 函式被呼叫 示例2 def f1 print f1 def f2 print f2 f1,f2 f2,f1 f1 f2 乙個函式可以作為另乙個函式的實...

shell 教程六 函式的使用

linux ubuntu test shell cat hello sh bin bash myfunc echo begin call myfunc myfunc echo end call myfunc linux ubuntu test shell hello sh begin call my...