1、定義函數(shù)

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、浙江網(wǎng)絡(luò)推廣、小程序設(shè)計、浙江網(wǎng)絡(luò)營銷、浙江企業(yè)策劃、浙江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供浙江建站搭建服務,24小時服務熱線:13518219792,官方網(wǎng)址:chinadenli.net
函數(shù)是可重用的程序。本書中已經(jīng)使用了許多內(nèi)建函數(shù),如len()函數(shù)和range()函數(shù),但是還沒自定義過函數(shù)。定義函數(shù)的語法格式如下:
def 函數(shù)名(參數(shù)):
函數(shù)體
定義函數(shù)的規(guī)則如下:
①關(guān)鍵字def用來定義一個函數(shù),它是define的縮寫。
②函數(shù)名是函數(shù)的唯一標識,函數(shù)名的命名規(guī)則遵循標識符的命名規(guī)則。
③函數(shù)名后面一定要緊跟著一個括號,括號內(nèi)的參數(shù)是可選的,括號后面要有冒號。
④函數(shù)體(statement)為一個或一組Python語句,注意要有縮進。
⑤函數(shù)體的第一行可以有文檔字符串,用于描述函數(shù)的功能,用三引號括起來。
按照定義規(guī)則,可以定義第一個函數(shù)了:
def?hello_world():
...?????print('Hello,world!')???#?注意函數(shù)體要有縮進
...
hello_world()
Hello,world!
這個函數(shù)不帶任何參數(shù),它的功能是打印出“Hello,world!”。最后一行代碼hello_world()是調(diào)用函數(shù),即讓Python執(zhí)行函數(shù)的代碼。
2、全局變量和局部變量
全局變量是定義在所有函數(shù)外的變量。例如,定義一個全局變量a,分別在函數(shù)test1()和test2()使用變量a:
a?=?100???#?全局變量
def?test1():
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
100
test2()
100
定義了全局變量a之后,在函數(shù)test1()和test2()內(nèi)都可以使用變量a,由此可知,全局變量的作用范圍是全局。
局部變量是在函數(shù)內(nèi)定義的變量,除了用關(guān)鍵字global修飾的變量以外。例如,在函數(shù)test1()內(nèi)定義一個局部變量a,分別在函數(shù)外和另一個函數(shù)test2()內(nèi)使用變量a:
def?test1():
...?????a?=?100???#?局部變量
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
100
print(a)
Traceback?(most?recent?call?last):
File?"stdin",?line?1,?in?module
NameError:?name?'a'?is?not?defined
test2()
Traceback?(most?recent?call?last):
File?"stdin",?line?1,?in?module
File?"stdin",?line?2,?in?test2
NameError:?name?'a'?is?not?defined
Python解釋器提示出錯了。由于局部變量a定義在函數(shù)test1()內(nèi),因此,在函數(shù)test1()內(nèi)可以使用變量a,但是在函數(shù)外或者另一個函數(shù)test2()內(nèi)使用變量a,都會報錯,由此可見,局部變量的作用范圍是定義它的函數(shù)內(nèi)部。
一般情況下,在函數(shù)內(nèi)聲明的變量都是局部變量,但是采用關(guān)鍵字global修飾的變量卻是全局變量:
def?test1():
...?????global?a???#?全局變量
...?????a?=?100
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
100
print(a)
100
test2()
100
這個程序與上個程序相比,只是在函數(shù)test1()中多了一行代碼“global a”,程序便可以正確運行了。在函數(shù)test1()中,采用關(guān)鍵字global修飾了變量a之后,變量a就變成了全局變量,不僅可以在該函數(shù)內(nèi)使用,還可以在函數(shù)外或者其他函數(shù)內(nèi)使用。
如果在某個函數(shù)內(nèi)局部變量與全局變量同名,那么在該函數(shù)中局部變量會覆蓋全局變量:
a?=?100???#?全局變量
def?test1():
...?????a?=?200???#?同名局部變量
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
200
test2()
100
由于在函數(shù)test1()中定義了一個與全局變量同名的局部變量a,因此,在函數(shù)test1()中全局變量a的值被局部變量覆蓋了,但是在函數(shù)test2()中全局變量a的值沒有被覆蓋。
綜上所述,在Python中,全局變量保存的數(shù)據(jù)供整個腳本文件使用;而局部變量只用于臨時保存數(shù)據(jù),變量僅供局部代碼塊使用。
內(nèi)置函數(shù)就是Python給你提供的,拿來直接用的函數(shù),比如print.,input等。
截止到python版本3.6.2 ,python一共提供了68個內(nèi)置函數(shù),具體如下
本文將這68個內(nèi)置函數(shù)綜合整理為12大類,正在學習Python基礎(chǔ)的讀者一定不要錯過,建議收藏學習!
(1)列表和元組
(2)相關(guān)內(nèi)置函數(shù)
(3)字符串
frozenset 創(chuàng)建一個凍結(jié)的集合,凍結(jié)的集合不能進行添加和刪除操作。
語法:sorted(Iterable, key=函數(shù)(排序規(guī)則), reverse=False)
語法:fiter(function. Iterable)
function: 用來篩選的函數(shù). 在?lter中會自動的把iterable中的元素傳遞給function. 然后根據(jù)function返回的True或者False來判斷是否保留留此項數(shù)據(jù) , Iterable: 可迭代對象
搜索公眾號頂級架構(gòu)師后臺回復“面試”,送你一份驚喜禮包。
語法 : map(function, iterable)
可以對可迭代對象中的每一個元素進行映射. 分別去執(zhí)行 function
hash : 獲取到對象的哈希值(int, str, bool, tuple). hash算法:(1) 目的是唯一性 (2) dict 查找效率非常高, hash表.用空間換的時間 比較耗費內(nèi)存
python函數(shù)的作用是:
1、函數(shù)其實是把某個功能的代碼封裝到一個代碼塊中,用來為某個重復使用的功能做調(diào)用的一個代碼塊,可以稱為一個函數(shù)的代碼封裝。可以在自定義函數(shù)的小括號中傳入多個參數(shù)。
2、形參:在定義函數(shù)時,小括號中的參數(shù)名稱。實參:在函數(shù)名稱的小括號中,傳入實際的值代替了形參的這個值。函數(shù)可以有返回值(使用return進行返回),也可以沒有返回值。
3、形參可以當做函數(shù)內(nèi)部的一個變量使用,往往只在函數(shù)內(nèi)部進行使用,不影響函數(shù)外部的相同名稱的變量。
4、在函數(shù)內(nèi)部可以返回某個值。直接在函數(shù)內(nèi)部退出來,而不再繼續(xù)執(zhí)行函數(shù)下面的代碼。
更多關(guān)于python函數(shù)的作用,進入:查看更多內(nèi)容
1、函數(shù)定義
①使用def關(guān)鍵字定義函數(shù)
②
def 函數(shù)名(參數(shù)1.參數(shù)2.參數(shù)3...):
"""文檔字符串,docstring,用來說明函數(shù)的作用"""
#函數(shù)體
return 表達式
注釋的作用:說明函數(shù)是做什么的,函數(shù)有什么功能。
③遇到冒號要縮進,冒號后面所有的縮進的代碼塊構(gòu)成了函數(shù)體,描述了函數(shù)是做什么的,即函數(shù)的功能是什么。Python函數(shù)的本質(zhì)與數(shù)學中的函數(shù)的本質(zhì)是一致的。
2、函數(shù)調(diào)用
①函數(shù)必須先定義,才能調(diào)用,否則會報錯。
②無參數(shù)時函數(shù)的調(diào)用:函數(shù)名(),有參數(shù)時函數(shù)的調(diào)用:函數(shù)名(參數(shù)1.參數(shù)2.……)
③不要在定義函數(shù)的時候在函數(shù)體里面調(diào)用本身,否則會出不來,陷入循環(huán)調(diào)用。
④函數(shù)需要調(diào)用函數(shù)體才會被執(zhí)行,單純的只是定義函數(shù)是不會被執(zhí)行的。
⑤Debug工具中Step into進入到調(diào)用的函數(shù)里,Step Into My Code進入到調(diào)用的模塊里函數(shù)。
help 源于英文,標識幫助
help函數(shù)是python的一個內(nèi)置函數(shù)(python的內(nèi)置函數(shù)可以直接調(diào)用,無需import)
所以我們執(zhí)行help示例:
2.函數(shù)定義源碼及其用法拆解
一些不常用的函數(shù)或是模塊的用途不是很清楚,這時候就需要用到help函數(shù)來查看幫助。
參數(shù)說明:
也可傳入一個數(shù)據(jù)結(jié)構(gòu)查詢幫助方法
如下,就可以展示出可以對list做的操作
還可以具體到某個方法:
3.版本差異
無版本差異
4.學習建議
當手邊資料較少時,不要忘了系統(tǒng)提供的help函數(shù)可以提供給我們陌生方法的用法參考。
對基礎(chǔ)運行環(huán)境有疑問的,推薦參考: python函數(shù)深入淺出 0.基礎(chǔ)篇
time.sleep() 函數(shù)命名來源于英文單詞time(時間)和sleep(睡眠)。
time 是python帶的非內(nèi)置庫,使用時需要import,主要用于處理和時間相關(guān)的操作。
time.sleep用于給定時間內(nèi)掛起(等待)當前線程的執(zhí)行。
time.sleep() 函數(shù)的例子:
可以注釋掉time.sleep(2)再運行一次對比一下
可以看到雖然都是打印出一樣的結(jié)果,但time.sleep()加入了等待時間
這里還要解釋一下python中線程與進程的區(qū)別。
舉個例子,廚房做菜看成是一個進程,那么這個進程下面就可能有多個人或一個人(cpu基本執(zhí)行單元,即線程)來執(zhí)行,多個人可以分別洗菜,刷碗,擺盤等等同時作業(yè),他們又是共享這個廚房的資源的。每個人存在一定的資源競爭關(guān)系,比如爐火只有1個。
這里time.sleep是針對線程執(zhí)行的,也就是其中一個人去sleep睡覺了,不影響其他人的繼續(xù)工作。
參數(shù)
該函數(shù)沒有返回值。
結(jié)果類似如下:
可以看到秒數(shù)相差了5
無
time.sleep()常用于推遲執(zhí)行的場景
在python中,與時間相關(guān)的模塊有:time,datetime以及calendar
對基礎(chǔ)運行環(huán)境有疑問的,推薦參考: python函數(shù)深入淺出 0.基礎(chǔ)篇
當前標題:python函數(shù)修飾詳解的簡單介紹
分享URL:http://chinadenli.net/article0/dsijeio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網(wǎng)頁設(shè)計公司、云服務器、做網(wǎng)站、動態(tài)網(wǎng)站、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)