這里的QuickSort.count叫做"函數(shù)屬性function attribute",
創(chuàng)新互聯(lián)建站專注于威遠(yuǎn)企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城開發(fā)。威遠(yuǎn)網(wǎng)站建設(shè)公司,為威遠(yuǎn)等地區(qū)提供建站服務(wù)。全流程按需設(shè)計(jì)網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
python等動(dòng)態(tài)類型語言所具有的"函數(shù)同時(shí)是頭等對(duì)象"的功能.
即代碼可以往函數(shù)對(duì)象上靈活地添加某屬性。
def?f():???
print(f.act)
f.act=123?#定義和添加一個(gè)函數(shù)對(duì)象的屬性-函數(shù)屬性
f()?#打印123
之前的快速排序用了一個(gè)count屬性在記錄排序算法的比較次數(shù)。屬于調(diào)試顯示,不是排序的核心算法..
1、定義函數(shù)
函數(shù)是可重用的程序。本書中已經(jīng)使用了許多內(nèi)建函數(shù),如len()函數(shù)和range()函數(shù),但是還沒自定義過函數(shù)。定義函數(shù)的語法格式如下:
def 函數(shù)名(參數(shù)):
函數(shù)體
定義函數(shù)的規(guī)則如下:
①關(guān)鍵字def用來定義一個(gè)函數(shù),它是define的縮寫。
②函數(shù)名是函數(shù)的唯一標(biāo)識(shí),函數(shù)名的命名規(guī)則遵循標(biāo)識(shí)符的命名規(guī)則。
③函數(shù)名后面一定要緊跟著一個(gè)括號(hào),括號(hào)內(nèi)的參數(shù)是可選的,括號(hào)后面要有冒號(hào)。
④函數(shù)體(statement)為一個(gè)或一組Python語句,注意要有縮進(jìn)。
⑤函數(shù)體的第一行可以有文檔字符串,用于描述函數(shù)的功能,用三引號(hào)括起來。
按照定義規(guī)則,可以定義第一個(gè)函數(shù)了:
def?hello_world():
...?????print('Hello,world!')???#?注意函數(shù)體要有縮進(jìn)
...
hello_world()
Hello,world!
這個(gè)函數(shù)不帶任何參數(shù),它的功能是打印出“Hello,world!”。最后一行代碼hello_world()是調(diào)用函數(shù),即讓Python執(zhí)行函數(shù)的代碼。
2、全局變量和局部變量
全局變量是定義在所有函數(shù)外的變量。例如,定義一個(gè)全局變量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)定義一個(gè)局部變量a,分別在函數(shù)外和另一個(gè)函數(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解釋器提示出錯(cuò)了。由于局部變量a定義在函數(shù)test1()內(nèi),因此,在函數(shù)test1()內(nèi)可以使用變量a,但是在函數(shù)外或者另一個(gè)函數(shù)test2()內(nèi)使用變量a,都會(huì)報(bào)錯(cuò),由此可見,局部變量的作用范圍是定義它的函數(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
這個(gè)程序與上個(gè)程序相比,只是在函數(shù)test1()中多了一行代碼“global a”,程序便可以正確運(yùn)行了。在函數(shù)test1()中,采用關(guān)鍵字global修飾了變量a之后,變量a就變成了全局變量,不僅可以在該函數(shù)內(nèi)使用,還可以在函數(shù)外或者其他函數(shù)內(nèi)使用。
如果在某個(gè)函數(shù)內(nèi)局部變量與全局變量同名,那么在該函數(shù)中局部變量會(huì)覆蓋全局變量:
a?=?100???#?全局變量
def?test1():
...?????a?=?200???#?同名局部變量
...?????print(a)
...
def?test2():
...?????print(a)
...
test1()
200
test2()
100
由于在函數(shù)test1()中定義了一個(gè)與全局變量同名的局部變量a,因此,在函數(shù)test1()中全局變量a的值被局部變量覆蓋了,但是在函數(shù)test2()中全局變量a的值沒有被覆蓋。
綜上所述,在Python中,全局變量保存的數(shù)據(jù)供整個(gè)腳本文件使用;而局部變量只用于臨時(shí)保存數(shù)據(jù),變量?jī)H供局部代碼塊使用。
Python基本語法
Python的語法相對(duì)比C,C++,Java更加簡(jiǎn)潔,比較符合人的正常思維。本篇介紹Python的基本語法,通過本篇文章你可以學(xué)到以下內(nèi)容。
掌握Python的基本語法
識(shí)別Python中的關(guān)鍵字
Python是一門腳本語言,有以下特點(diǎn):
面向?qū)ο螅侯?/p>
語法塊:使用縮進(jìn)進(jìn)行標(biāo)記
注釋: #單行注釋,"""多行注釋""",'''我也是多行注釋''
打印與輸出:print(), input()
變量: 變量在賦值的時(shí)候確定變量的類型
模塊:通過import 模塊名進(jìn)行加載模塊
Python的標(biāo)識(shí)符
標(biāo)識(shí)符是用戶編程時(shí)使用的名字,用于給變量、常量、函數(shù)、語句塊等命名,以建立起名稱與使用之間的關(guān)系。標(biāo)識(shí)符通常由字母和數(shù)字以及其它字符構(gòu)成。
標(biāo)識(shí)符的命名遵循以下規(guī)定:
開頭以字母或者下劃線_,剩下的字符數(shù)字字母或者下劃線
Python遵循小駝峰命名法
不是使用Python中的關(guān)鍵字進(jìn)行命名
代碼示例:
num = 10 # 這是一個(gè)int類型變量
錯(cuò)誤命名示例:
123rate(數(shù)字開頭)、 mac book pro(含有空格),class(關(guān)鍵字)
Python關(guān)鍵字
以下列表中的關(guān)鍵字不可以當(dāng)作標(biāo)識(shí)符進(jìn)行使用。Python語言的關(guān)鍵字只包含小寫字母。
python的語法就是編寫python程序時(shí)需要遵循的一些規(guī)則,以及一些數(shù)據(jù)的使用方式,python基本語法包括基本數(shù)據(jù)類型、布爾值、函數(shù)、循環(huán)語句、條件判斷、類、文件操作、模塊等。
python語法優(yōu)點(diǎn):
簡(jiǎn)單:Python是一種代表簡(jiǎn)單主義思想的語言。閱讀一個(gè)良好的Python程序就感覺像是在讀英語一樣。它使你能夠?qū)W⒂诮鉀Q問題而不是去搞明白語言本身。
易學(xué):Python極其容易上手,因?yàn)镻ython有極其簡(jiǎn)單的說明文檔。
速度快:Python 的底層是用 C 語言寫的,很多標(biāo)準(zhǔn)庫和第三方庫也都是用 C 寫的,運(yùn)行速度非???。
免費(fèi)、開源:Python是FLOSS(自由/開放源碼軟件)之一。使用者可以自由地發(fā)布這個(gè)軟件的拷貝、閱讀它的源代碼、對(duì)它做改動(dòng)、把它的一部分用于新的自由軟件中。FLOSS是基于一個(gè)團(tuán)體分享知識(shí)的概念。
高層語言:用Python語言編寫程序的時(shí)候無需考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細(xì)節(jié)。