python函數(shù)定義和調(diào)用過程詳解
這篇文章主要介紹了python函數(shù)定義和調(diào)用過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
我們可以創(chuàng)建一個(gè)函數(shù)來列出費(fèi)氏數(shù)列
>>> 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
函數(shù)的調(diào)用會(huì)為函數(shù)局部變量生產(chǎn)一個(gè)新的符號(hào)表。確切說,所有函數(shù)中的變量賦值都是將值存儲(chǔ)在局部符號(hào)表。變量引用首先在局部符號(hào)表中查找,然后是包含函數(shù)的局部符號(hào)表,然后是全局符號(hào)表,最后是內(nèi)置名字表。因此,局部變量不能在函數(shù)中直接賦值(除非用global),盡管他們可以被引用。
函數(shù)引用的實(shí)參在函數(shù)被調(diào)用的時(shí)候引入局部符號(hào)表,因此實(shí)參總是傳值調(diào)用(該值通常指的是對(duì)象的引用,而不是該對(duì)象的值),一個(gè)函數(shù)被另一個(gè)函數(shù)調(diào)用的時(shí)候,一個(gè)新的局部符號(hào)表在調(diào)用過程中被創(chuàng)建。python的函數(shù)是以傳址的方式工作,當(dāng)調(diào)用一個(gè)函數(shù)的時(shí)候,改變指針指向。
一個(gè)函數(shù)定義的時(shí)候會(huì)講函數(shù)名引入當(dāng)前子都表。函數(shù)名指代的值會(huì)被解析器當(dāng)作用戶定義函數(shù)的類型。這個(gè)值可以賦予其他的名字,然后其他的名字也可以被當(dāng)作函數(shù)使用,這可以作為通用的重命名機(jī)制:
>>> fib <function fib at 10042ed0> >>> f = fib >>> f(100) 0 1 1 2 3 5 8 13 21 34 55 89
你可能覺得fib不是一個(gè)函數(shù)而是一個(gè)方法,因?yàn)樗麤]有返回值,實(shí)際上,沒有帶return的函數(shù)也返回了一個(gè)值,就是none(內(nèi)建名稱),如果你想看到這個(gè)值,可以打印出來:
>>> fib(0) >>> print(fib(0)) None
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python中函數(shù)的定義及其調(diào)用
- python def 定義函數(shù),調(diào)用函數(shù)方式
- Python函數(shù)必須先定義,后調(diào)用說明(函數(shù)調(diào)用函數(shù)例外)
- Python 跨.py文件調(diào)用自定義函數(shù)說明
- python調(diào)用自定義函數(shù)的實(shí)例操作
- Python自定義函數(shù)定義,參數(shù),調(diào)用代碼解析
- Python自定義函數(shù)的創(chuàng)建、調(diào)用和函數(shù)的參數(shù)詳解
- python函數(shù)的定義和調(diào)用案例講解
相關(guān)文章
Python+wxPython實(shí)現(xiàn)一個(gè)簡(jiǎn)單的音樂播放器
這篇文章主要為大家詳細(xì)介紹了如何使用Python編程語言和wxPython模塊創(chuàng)建一個(gè)簡(jiǎn)單的音樂播放器,文中的示例代碼講解詳細(xì),感興趣的可以了解下2023-09-09Python 實(shí)現(xiàn)list,tuple,str和dict之間的相互轉(zhuǎn)換
這篇文章主要介紹了Python 實(shí)現(xiàn)list,tuple,str和dict之間的相互轉(zhuǎn)換,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03python中通過預(yù)先編譯正則表達(dá)式提高效率
Python是一個(gè)很酷的語言,因?yàn)槟憧梢栽诤芏痰臅r(shí)間內(nèi)利用很少的代碼做很多事情,再加上正則表達(dá)式就更能體現(xiàn)其效果,下面這篇文章主要給大家介紹了關(guān)于python中通過預(yù)先編譯正則表達(dá)式提高效率的相關(guān)資料,需要的朋友可以參考下。2017-09-09python爬蟲scrapy基于CrawlSpider類的全站數(shù)據(jù)爬取示例解析
這篇文章主要介紹了python爬蟲scrapy基于CrawlSpider類的全站數(shù)據(jù)爬取示例解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02python實(shí)戰(zhàn)游戲之史上最難最虐的掃雷游戲沒有之一
這篇文章主要介紹了使用 python 實(shí)現(xiàn)掃雷游戲,不同于傳統(tǒng)過時(shí)的掃雷,今天我們用 Python 增加了新花樣,文中給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09