1、函數(shù)定義
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比寧強(qiáng)網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式寧強(qiáng)網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋寧強(qiáng)地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。
①使用def關(guān)鍵字定義函數(shù)
②
def 函數(shù)名(參數(shù)1.參數(shù)2.參數(shù)3...):
"""文檔字符串,docstring,用來說明函數(shù)的作用"""
#函數(shù)體
return 表達(dá)式
注釋的作用:說明函數(shù)是做什么的,函數(shù)有什么功能。
③遇到冒號要縮進(jìn),冒號后面所有的縮進(jìn)的代碼塊構(gòu)成了函數(shù)體,描述了函數(shù)是做什么的,即函數(shù)的功能是什么。Python函數(shù)的本質(zhì)與數(shù)學(xué)中的函數(shù)的本質(zhì)是一致的。
2、函數(shù)調(diào)用
①函數(shù)必須先定義,才能調(diào)用,否則會(huì)報(bào)錯(cuò)。
②無參數(shù)時(shí)函數(shù)的調(diào)用:函數(shù)名(),有參數(shù)時(shí)函數(shù)的調(diào)用:函數(shù)名(參數(shù)1.參數(shù)2.……)
③不要在定義函數(shù)的時(shí)候在函數(shù)體里面調(diào)用本身,否則會(huì)出不來,陷入循環(huán)調(diào)用。
④函數(shù)需要調(diào)用函數(shù)體才會(huì)被執(zhí)行,單純的只是定義函數(shù)是不會(huì)被執(zhí)行的。
⑤Debug工具中Step into進(jìn)入到調(diào)用的函數(shù)里,Step Into My Code進(jìn)入到調(diào)用的模塊里函數(shù)。
在Python中,lambda函數(shù)是一個(gè)簡單的匿名函數(shù)。該函數(shù)沒有函數(shù)名,它可以有多個(gè)參數(shù),但函數(shù)只由一個(gè)表達(dá)式構(gòu)成。
lambda函數(shù)具體的格式如下:
lambda 參數(shù) : 表達(dá)式
其中, lambda 是關(guān)鍵字, 參數(shù) 是函數(shù)的參數(shù),可以有0至多個(gè)。冒號后面是表達(dá)式,也是該函數(shù)中的唯一的表達(dá)式,lambda函數(shù)會(huì)返回該表達(dá)式的返回值。
我們來看一個(gè)具體的例子。
在上述代碼中,number1, number2是lambda函數(shù)的參數(shù),number1**2+number**2是函數(shù)的表達(dá)式,該函數(shù)返回number1, number2兩個(gè)數(shù)的平方和。
上述代碼創(chuàng)建了一個(gè)lambda函數(shù)后將其賦值給變量sum_square, 在print函數(shù)中通過sum_square來調(diào)用這個(gè)lambda函數(shù)。
上述的lambda函數(shù)完全可用標(biāo)準(zhǔn)的函數(shù)來實(shí)現(xiàn),我們可以將上述代碼改寫成下面的代碼。
在代碼中,定義了函數(shù)sum_square,該函數(shù)包含兩個(gè)參數(shù),并執(zhí)行一條語句并將該語句的執(zhí)行結(jié)果作為函數(shù)返回值。通過上述代碼可以幫助我們更直觀地理解lambda函數(shù)。
lambda函數(shù)的可讀性較差,那么為什么要有這樣奇怪的匿名函數(shù)呢?這個(gè)要從lambda的使用場合說起。我們來看下面的代碼。
上述代碼定義了一個(gè)數(shù)值列表,調(diào)用python的內(nèi)置函數(shù)filter來生成一個(gè)新的迭代器。 filter函數(shù)的第一個(gè)參數(shù)為一個(gè)函數(shù),用于決定過濾的方法;第二個(gè)參數(shù)為一個(gè)可迭代的對象如列表、集合等。filter函數(shù)返回一個(gè)新的迭代器, 用于獲得滿足第一個(gè)函數(shù)為真的所有元素。在上述代碼中,我們給filter傳遞的第一個(gè)參數(shù)是一個(gè)匿名函數(shù):lambda number:number%3==0, 該函數(shù)在一個(gè)數(shù)整除3時(shí)為True,否則為False. filter函數(shù)會(huì)創(chuàng)建一個(gè)新的迭代器,通過調(diào)用上述匿名函數(shù)來判斷該元素是否滿足條件,得到所有3的倍數(shù)的數(shù)。
當(dāng)然,上述代碼也可以使用正常的函數(shù)方式來實(shí)現(xiàn),如下所示:
我們可以看到,所有匿名函數(shù)的功能都可以通過標(biāo)準(zhǔn)函數(shù)來實(shí)現(xiàn)。匿名函數(shù)常在調(diào)用其它函數(shù)(如filter, map等)時(shí)作為參數(shù)使用。使用匿名函數(shù)可以使代碼更為精簡。匿名函數(shù)主要用于完成簡單的任務(wù),如果匿名函數(shù)過于復(fù)雜,會(huì)導(dǎo)致可讀性較差,調(diào)試起來也比較困難,因此,強(qiáng)烈不建議使用lambda寫天書般的代碼??傊?,要根據(jù)實(shí)際情況決定是否使用匿名函數(shù)。
根號可以用python的math模塊里的sqrt()函數(shù),比如
import math
math.sqrt(25)
返回5
其余的可以定義變量來表示 (*^▽^*)
range 類型表示不可變的數(shù)字序列,通常用于在 for 循環(huán)中循環(huán)指定的次數(shù)。
range 構(gòu)造器的參數(shù)必須為整數(shù)(可以是內(nèi)置的 int 或任何實(shí)現(xiàn)了 __index__ 特殊方法的對象)。 如果省略 step 參數(shù),其默認(rèn)值為 1 。 如果省略 start 參數(shù),其默認(rèn)值為 0 ,如果 step 為零則會(huì)引發(fā) ValueError。
如果 step 為正值,確定 range r 內(nèi)容的公式為 r[i] = start + step*i 其中 i = 0 且 r[i] stop 。
如果 step 為負(fù)值,確定 range 內(nèi)容的公式仍然為 r[i] = start + step*i ,但限制條件改為 i = 0 且 r[i] stop .
如果 r[0] 不符合值的限制條件,則該 range 對象為空。 range 對象確實(shí)支持負(fù)索引,但是會(huì)將其解讀為從正索引所確定的序列的末尾開始索引。
元素絕對值大于 sys.maxsize 的 range 對象是被允許的,但某些特性 (例如 len()) 可能引發(fā) OverflowError。
一些 range 對象的例子:
range 對象實(shí)現(xiàn)了 一般 序列的所有操作,但拼接和重復(fù)除外(這是由于 range 對象只能表示符合嚴(yán)格模式的序列,而重復(fù)和拼接通常都會(huì)違反這樣的模式)。
start
start 形參的值 (如果該形參未提供則為 0 )
stop
stop 形參的值
step
step 形參的值 (如果該形參未提供則為 1 )
range 類型相比常規(guī) list 或 tuple 的優(yōu)勢在于一個(gè) range 對象總是占用固定數(shù)量的(較?。﹥?nèi)存,不論其所表示的范圍有多大(因?yàn)樗槐4媪? start , stop 和 step 值,并會(huì)根據(jù)需要計(jì)算具體單項(xiàng)或子范圍的值)。
range 對象實(shí)現(xiàn)了 collections.abc.Sequence ABC,提供如包含檢測、元素索引查找、切片等特性,并支持負(fù)索引
使用 == 和 != 檢測 range 對象是否相等是將其作為序列來比較。 也就是說,如果兩個(gè) range 對象表示相同的值序列就認(rèn)為它們是相等的。 (請注意比較結(jié)果相等的兩個(gè) range 對象可能會(huì)具有不同的 start, stop 和 step 屬性,例如 range(0) == range(2, 1, 3) 而 range(0, 3, 2) == range(0, 4, 2) 。)
在 3.2 版更改: 實(shí)現(xiàn) Sequence ABC。 支持切片和負(fù)數(shù)索引。 使用 int 對象在固定時(shí)間內(nèi)進(jìn)行成員檢測,而不是逐一迭代所有項(xiàng)。
在 3.3 版更改: 定義 '==' 和 '!=' 以根據(jù) range 對象所定義的值序列來進(jìn)行比較(而不是根據(jù)對象的標(biāo)識(shí))。
3.3 新版功能: start, stop 和 step 屬性。
首先我們先來了解一下計(jì)算平均數(shù)的IPO模式.
輸入:待輸入計(jì)算平均數(shù)的數(shù)。
處理:平均數(shù)算法
輸出:平均數(shù)
明白了程序的IPO模式之后,我們打開本地的python的IDE
工具,并新建一個(gè)python文件,命名為test6.py.
請點(diǎn)擊輸入圖片描述
請點(diǎn)擊輸入圖片描述
請點(diǎn)擊輸入圖片描述
打開test6.py,進(jìn)行編碼,第一步,提示用戶輸入要計(jì)算多少個(gè)數(shù)的平均數(shù)。
請點(diǎn)擊輸入圖片描述
第二步,初始化sum總和的值。注意,這是編碼的好習(xí)慣,在定義一個(gè)變量的時(shí)候,給一個(gè)初始值。
請點(diǎn)擊輸入圖片描述
第三步,循環(huán)輸入要計(jì)算平均數(shù)的數(shù),并計(jì)算總和sum的值。
請點(diǎn)擊輸入圖片描述
最后,計(jì)算出平均數(shù),并輸出,利用“總和/數(shù)量”的公式計(jì)算出平均數(shù)。
請點(diǎn)擊輸入圖片描述
編碼完成后,記得保存,然后進(jìn)行調(diào)試運(yùn)行。按F5鍵或者點(diǎn)擊菜單欄中的“run”-》“run model”來運(yùn)行程序。
請點(diǎn)擊輸入圖片描述
請點(diǎn)擊輸入圖片描述