這篇文章主要介紹了python函數定義和調用過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
我們可以創建一個函數來列出費氏數列
>>> def fib(n): # write Fibonacci series up to n... """Print a Fibonacci series up to n."""... a, b = 0, 1... while a < n:... print(a, end=' ')... a, b = b, a+b... print()...>>> # Now call the function we just defined:... fib(2000)0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
函數的調用會為函數局部變量生產一個新的符號表。確切說,所有函數中的變量賦值都是將值存儲在局部符號表。變量引用首先在局部符號表中查找,然后是包含函數的局部符號表,然后是全局符號表,最后是內置名字表。因此,局部變量不能在函數中直接賦值(除非用global),盡管他們可以被引用。
函數引用的實參在函數被調用的時候引入局部符號表,因此實參總是傳值調用(該值通常指的是對象的引用,而不是該對象的值),一個函數被另一個函數調用的時候,一個新的局部符號表在調用過程中被創建。python的函數是以傳址的方式工作,當調用一個函數的時候,改變指針指向。
一個函數定義的時候會講函數名引入當前子都表。函數名指代的值會被解析器當作用戶定義函數的類型。這個值可以賦予其他的名字,然后其他的名字也可以被當作函數使用,這可以作為通用的重命名機制:
>>> fib<function fib at 10042ed0>>>> f = fib>>> f(100)0 1 1 2 3 5 8 13 21 34 55 89
你可能覺得fib不是一個函數而是一個方法,因為他沒有返回值,實際上,沒有帶return的函數也返回了一個值,就是none(內建名稱),如果你想看到這個值,可以打印出來:
>>> fib(0)>>> print(fib(0))None
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。
新聞熱點
疑難解答