python 建立函式

2021-10-02 19:47:58 字數 1470 閱讀 3410

一、函式定義和宣告

在某些程式語言裡, 函式宣告和函式定義區分開的。乙個函式宣告包括提供對函式名,引數的名字(傳統上還有引數的型別), 但不必給出函式的任何**, 具體的**通常屬於函式定義的範疇。在宣告和定義有區別的語言中, 往往是因為函式的定義可能和其宣告放在不同的檔案中。 python將這兩者視為一體,函式的子句由宣告的標題行以及隨後的定義體組成的。

二、函式屬性

你可以獲得每個 pyhon 模組,類,和函式中任意的名字空間。你可以在模組 foo 和 bar 裡都有名為 x 的乙個變數,,但是在將這兩個模組匯入你的程式後,仍然可以使用這兩個變數。所以,即使在兩個模組中使用了相同的變數名字,這也是安全的,因為句點屬性標識對於兩個模組意味了不同的命名空間。

三、傳遞函式

函式有乙個獨一無二的特徵使它同其他物件區分開來,那就是函式是可呼叫的。因為所有的物件都是通過引用來傳遞的,函式也不例外。當對乙個變數賦值時,實際是將相同物件的引用賦值給這個變數。如果物件是函式的話,這個物件所有的別名都是可呼叫的。

當我們把 foo 賦值給 bar 時,bar 和 foo 引用了同乙個函式物件,所以能以和呼叫 foo()相同的方式來呼叫 bar()。確定你明白"foo"(函式物件的引用)和"foo()"(函式物件的呼叫)的區別。

>>> def foo():

... print 'in foo()'

...>>> bar = foo

>>> bar()

in foo()

稍微深入下我們引用的例子,我們甚至可以把函式作為引數傳入其他函式來進行呼叫。

>>> def bar(argfunc):

... argfunc()

...>>> bar(foo)

in foo()

注意到函式物件 foo 被傳入到 bar()中。bar()呼叫了 foo()(用區域性變數 argfunc 來作為其別名就如同在前面的例子中我們把 foo 賦給 bar 一樣)。

四、形式引數

python 函式的形參集合由在呼叫時要傳入函式的所有引數組成,這引數與函式宣告中的引數列表精確的配對。這些引數包括了所有必要引數(以正確的定位順序來傳入函式的),關鍵字引數(以順序或者不按順序傳入,但是帶有引數列表中曾定義過的關鍵字),以及所有含有預設值,函式呼叫時不必要指定的引數。

1、位置引數

位置引數必須以在被呼叫函式中定義的準確順序來傳遞。另外,沒有任何預設引數(見下乙個部分)的話,傳入函式(呼叫)的引數的精確的數目必須和宣告的數字一致。

2、預設引數

對於預設引數如果在函式呼叫時沒有為引數提供值則使用預先定義的的預設值,這些定義在函式宣告的標題行中給出。

特別注意,python 中用預設值宣告變數的語法是所有的位置引數必須出現在任何乙個預設引數之前。

def func(posargs, defarg1=dval1, defarg2=dval2,...):

"function_documentation_string"

function_body_suite

python建立目錄函式 python 建立目錄

python對檔案的操作還算是方便的,只需要包含os模組進來,使用相關函式即可實現目錄的建立。主要涉及到三個函式 1 os.path.exists path 判斷乙個目錄是否存在 2 os.makedirs path 多層建立目錄 3 os.mkdir path 建立目錄 demo 直接上 def ...

Python函式建立

函式建立 1.def語句 def hellosomeone who returns a salutory string customized with the input return hello str who hellosomeone limin hellolimin 標題行由def關鍵字,函式...

python如何建立函式 python函式 生成器

1.理論知識 什麼是生成器?生成器的本質就是迭代器。生成器和迭代器也有不同,唯一的不同就是 迭代器都是python給你提供的已經寫好的工具或者通過資料轉化得來的,比如檔案控制代碼,iter 1,2,3 生成器是需要我們自己用python 構建的工具。最大的區別也就如此了。2.生成器的構建方式?在py...