1、函數(shù)定義

10年積累的網(wǎng)站設計、網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有云龍免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
①使用def關鍵字定義函數(shù)
②
def 函數(shù)名(參數(shù)1.參數(shù)2.參數(shù)3...):
"""文檔字符串,docstring,用來說明函數(shù)的作用"""
#函數(shù)體
return 表達式
注釋的作用:說明函數(shù)是做什么的,函數(shù)有什么功能。
③遇到冒號要縮進,冒號后面所有的縮進的代碼塊構成了函數(shù)體,描述了函數(shù)是做什么的,即函數(shù)的功能是什么。Python函數(shù)的本質與數(shù)學中的函數(shù)的本質是一致的。
2、函數(shù)調用
①函數(shù)必須先定義,才能調用,否則會報錯。
②無參數(shù)時函數(shù)的調用:函數(shù)名(),有參數(shù)時函數(shù)的調用:函數(shù)名(參數(shù)1.參數(shù)2.……)
③不要在定義函數(shù)的時候在函數(shù)體里面調用本身,否則會出不來,陷入循環(huán)調用。
④函數(shù)需要調用函數(shù)體才會被執(zhí)行,單純的只是定義函數(shù)是不會被執(zhí)行的。
⑤Debug工具中Step into進入到調用的函數(shù)里,Step Into My Code進入到調用的模塊里函數(shù)。
這里來給大家演示一下,函數(shù)的定義或構造,并調用函數(shù)來實現(xiàn)封裝后的效果。
首先我們來看看想實現(xiàn)下面的這個效果,如果不使用函數(shù)應該怎么實現(xiàn)。
以上兩種返回結果都是1-9這幾個數(shù)字。
以上兩種方法,第一種代碼重復率太高,代碼美觀效果太差,雖然能實現(xiàn)效果,但是因為數(shù)量比較少,還能手工打出來這幾行代碼,如果是打印1-100000就很難實現(xiàn)了。這時候for循環(huán)還是可以實現(xiàn)的,但是for循環(huán)只能實現(xiàn)類似的數(shù)字和變量循環(huán),無法進行復雜的功能開發(fā)。鑒于此,函數(shù)這個概念就被python引入了,下面先來看看函數(shù)是怎么實現(xiàn)上面的效果的,還是兩種方法。
這時候如果想實現(xiàn)上面的打印結果就直接使用函數(shù)名+小括號調用函數(shù)就可以了,這種類型的語法,不僅可以反復使用,而且封裝后的代碼更美觀。
已有字符串形式的函數(shù)名稱,那么如何調用這個函數(shù)呢?
通過調用內(nèi)置函數(shù)locals()和globals()返回的字典對象,就可以可以獲得名稱與對象的映射關系。其中,locals()僅在全局范圍內(nèi)調用時可以獲得函數(shù)對象。 我們來看以下的例子。
需要注意的是,使用上述方法通過字符串調用函數(shù)時,為了系統(tǒng)的安全,防止執(zhí)行任意函數(shù),需要對函數(shù)名做一些處理,也就是使用統(tǒng)一的前綴為這些函數(shù)命名。例如在上述例子中,使用前綴cmd_+函數(shù)名的形式定義函數(shù)(cmd_help,cmd_sum)。
在傳入函數(shù)名字符串時,只傳入函數(shù)名的后半部分(如"help","sum"),由程序添加前綴后組成完整的函數(shù)名,再調用該函數(shù)。
對于類的成員函數(shù),則可以使用getattr()獲得類成員函數(shù)。
上述代碼通過字符串調用了類成員函數(shù),與前一段代碼執(zhí)行的結果相同。
此外,還可以使用字典將字符串與函數(shù)對應起來調用,缺點就是每增加一個函數(shù)需要相應在字典對象中添加相應的鍵值,增加代碼維護工作量。
以上代碼在Python 3.6以上運行通過。
python的函數(shù)參數(shù)傳遞是"引用傳遞(地址傳遞)"。
python中賦值語句的過程(x = 1):先申請一段內(nèi)存分配給一個整型對象來存儲數(shù)據(jù)1,然后讓變量x去指向這個對象,實際上就是指向這段內(nèi)存(這里有點和C語言中的指針類似)。
在Python中,會為每個層次生成一個符號表,里層能調用外層中的變量,而外層不能調用里層中的變量,并且當外層和里層有同名變量時,外層變量會被里層變量屏蔽掉。函數(shù)? 調用 ?會為函數(shù)局部變量生成一個新的符號表。
局部變量:作用于該函數(shù)內(nèi)部,一旦函數(shù)執(zhí)行完成,該變量就被回收。
全局變量:它是在函數(shù)外部定義的,作用域是整個文件。全局變量可以直接在函數(shù)里面應用,但是如果要在函數(shù)內(nèi)部改變?nèi)肿兞浚仨毷褂胓lobal關鍵字進行聲明。
注意 :默認值在函數(shù)? 定義 ?作用域被解析
在定義函數(shù)時,就已經(jīng)執(zhí)行力它的局部變量
python中不可變類型是共享內(nèi)存地址的:把相同的兩個不可變類型數(shù)據(jù)賦給兩個不同變量a,b,a,b在內(nèi)存中的地址是一樣的。
1:
簡單的函數(shù)演示:
這個enumerate 函數(shù)挺有意思,用一次就愛不釋手,可以自己去敲敲代碼感受一下。
2:上面僅僅是簡單的一個展示已經(jīng)存在的書籍名稱,加入我新增了一本書,新增完成之后,我需要再show一下目前我有那些書呢?
如果沒有函數(shù)之前,我們肯定需要再次執(zhí)行一遍所有有關print的代碼,但是函數(shù)的功能就是讓我們減少重復冗余的代碼,只要再次調用show_book()即可。
再舉一個簡單的例子,在一個函數(shù)內(nèi)調用另外一個函數(shù),并傳遞參數(shù)
網(wǎng)站題目:python能調用函數(shù)嗎 python的函數(shù)調用
轉載源于:http://chinadenli.net/article48/hhghhp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、App開發(fā)、動態(tài)網(wǎng)站、網(wǎng)頁設計公司、微信公眾號、移動網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)