重點(diǎn):函數(shù)的參數(shù)和返回值,函數(shù)的嵌套調(diào)用脊另,模塊簡(jiǎn)介导狡,列表
時(shí)間:2019年12月13日
課程:黑馬Python基礎(chǔ)-14、15偎痛、16章(142.1 - 157.4)
14. 函數(shù)的參數(shù)
142.1 沒(méi)有參數(shù)的函數(shù)
過(guò)于死板(hm-05-函數(shù)的參數(shù))
思考一下存在什么問(wèn)題
函數(shù)只能處理 固定數(shù)值 的相加
如何解決旱捧?
- 如果能夠把需要計(jì)算的數(shù)字,在調(diào)用函數(shù)時(shí)踩麦,傳遞到函數(shù)內(nèi)部就好了枚赡!
143.2 函數(shù)參數(shù)的使用以及作用
- 在函數(shù)名的后面的小括號(hào)內(nèi)部填寫(xiě) 參數(shù)
- 多個(gè)參數(shù)之間使用
,
分隔
def sum_2_num(num1, num2):
result = num1 + num2
print("%d + %d = %d" % (num1, num2, result))
sum_2_num(50, 20)
參數(shù)的作用
- 函數(shù),把 具有獨(dú)立功能的代碼塊 組織為一個(gè)小模塊谓谦,在需要的時(shí)候 調(diào)用
-
函數(shù)的參數(shù)贫橙,增加函數(shù)的 通用性,針對(duì) 相同的數(shù)據(jù)處理邏輯反粥,能夠 適應(yīng)更多的數(shù)據(jù)
- 在函數(shù) 內(nèi)部卢肃,把參數(shù)當(dāng)做 變量 使用,進(jìn)行需要的數(shù)據(jù)處理
- 函數(shù)調(diào)用時(shí)才顿,按照函數(shù)定義的參數(shù)順序莫湘,把 希望在函數(shù)內(nèi)部處理的數(shù)據(jù),通過(guò)參數(shù) 傳遞
144.3 形參和實(shí)參
- 形參:定義 函數(shù)時(shí)娜膘,小括號(hào)中的參數(shù)逊脯,是用來(lái)接收參數(shù)用的,在函數(shù)內(nèi)部 作為變量使用
- 實(shí)參:調(diào)用 函數(shù)時(shí)竣贪,小括號(hào)中的參數(shù)军洼,是用來(lái)把數(shù)據(jù)傳遞到 函數(shù)內(nèi)部 用的
145.1 返回值的應(yīng)用場(chǎng)景和格式
- 在程序開(kāi)發(fā)中巩螃,有時(shí)候,會(huì)希望 一個(gè)函數(shù)執(zhí)行結(jié)束后匕争,告訴調(diào)用者一個(gè)結(jié)果避乏,以便調(diào)用者針對(duì)具體的結(jié)果做后續(xù)的處理
- 返回值 是函數(shù) 完成工作后,最后 給調(diào)用者的 一個(gè)結(jié)果
- 在函數(shù)中使用
return
關(guān)鍵字可以返回結(jié)果 - 調(diào)用函數(shù)一方甘桑,可以 使用變量 來(lái) 接收 函數(shù)的返回結(jié)果
注意:
return
表示返回拍皮,后續(xù)的代碼都不會(huì)被執(zhí)行
def sum_2_num(num1, num2):
"""對(duì)兩個(gè)數(shù)字的求和"""
return num1 + num2
# 調(diào)用函數(shù),并使用 result 變量接收計(jì)算結(jié)果
result = sum_2_num(10, 20)
print("計(jì)算結(jié)果是 %d" % result)
146.2 改造求和函數(shù)(hm-06-函數(shù)的返回值)
147.2 return關(guān)鍵字的注意事項(xiàng)
? return表示返回跑杭,下方的代碼不回被執(zhí)行铆帽。
15.函數(shù)的嵌套調(diào)用
148.1 函數(shù)嵌套調(diào)用的執(zhí)行線路圖(hm-07-函數(shù)的嵌套調(diào)用)
? 掌握函數(shù)嵌套調(diào)用的執(zhí)行順序邏輯
149.2【擴(kuò)展】用百度網(wǎng)站舉例說(shuō)明函數(shù)的調(diào)用線路
150.1 分割線演練:利用參數(shù)增加分割線的靈活度
? hm-08-打印分割線
def print_line(char, times):
print(char * times)
151.2 打印多條分割線
? hm-09-打印多條分割線
def print_line(char, times):
print(char * times)
def print_lines():
row = 0
while row < 5:
print_line("-", 50)
row += 1
152.3 增加多行分割線函數(shù)的參數(shù)
def print_line(char, times):
print(char * times)
def print_lines(char, times):
row = 0
while row < 5:
print_line(char, times)
row += 1
153.4 【擴(kuò)展】Pycharm給函數(shù)增加文檔注釋
? 鼠標(biāo)停留函數(shù)名(創(chuàng)建),點(diǎn)擊 Insert documentation string stub
德谅,給函數(shù)及參數(shù)添加注釋
? 查看文檔注釋:F1
16. 模塊簡(jiǎn)介
154.1 模塊概念
模塊是 Python 程序架構(gòu)的一個(gè)核心概念
- 模塊 就好比是 工具包爹橱,要想使用這個(gè)工具包中的工具,就需要 導(dǎo)入 import 這個(gè)模塊
- 每一個(gè)以擴(kuò)展名 py 結(jié)尾的 Python 源代碼文件都是一個(gè) 模塊
- 在模塊中定義的 全局變量 窄做、 函數(shù) 都是模塊能夠提供給外界直接使用的工具
155.2 使用模塊演練
步驟
- 新建 hm_10_分隔線模塊.py
- 復(fù)制 hm_09_打印多條分隔線.py 中的內(nèi)容愧驱,最后一行 print 代碼除外
- 增加一個(gè)字符串變量
name = "黑馬程序員"
import hm_10_分隔線模塊
hm_10_分隔線模塊.print_line("-", 80)
print(hm_10_分隔線模塊.name)
體驗(yàn)小結(jié)
- 可以 在一個(gè) Python 文件 中 定義 變量 或者 函數(shù)
- 然后在 另外一個(gè)文件中 使用
import
導(dǎo)入這個(gè)模塊 - 導(dǎo)入之后,就可以使用
模塊名.變量
/模塊名.函數(shù)
的方式椭盏,使用這個(gè)模塊中定義的變量或者函數(shù)
模塊可以讓 曾經(jīng)編寫(xiě)過(guò)的代碼 方便的被 復(fù)用组砚!
156.3 模塊名也是一個(gè)標(biāo)識(shí)符
- 標(biāo)示符可以由 字母、下劃線 和 數(shù)字 組成
- 不能以數(shù)字開(kāi)頭
- 不能與關(guān)鍵字重名
注意:如果在給 Python 文件起名時(shí)掏颊,以數(shù)字開(kāi)頭 是無(wú)法在 PyCharm 中通過(guò)導(dǎo)入這個(gè)模塊的157.4 【科普】pyc文件可以提高程序執(zhí)行速度
C
是compiled
編譯過(guò) 的意思
操作步驟
- 瀏覽程序目錄會(huì)發(fā)現(xiàn)一個(gè)
__pycache__
的目錄 - 目錄下會(huì)有一個(gè)
hm_10_分隔線模塊.cpython-35.pyc
文件糟红,cpython-35
表示Python
解釋器的版本 - 這個(gè)
pyc
文件是由 Python 解釋器將 模塊的源碼 轉(zhuǎn)換為 字節(jié)碼-
Python
這樣保存 字節(jié)碼 是作為一種啟動(dòng) 速度的優(yōu)化
-
字節(jié)碼
-
Python
在解釋源程序時(shí)是分成兩個(gè)步驟的- 首先處理源代碼,編譯 生成一個(gè)二進(jìn)制 字節(jié)碼
- 再對(duì) 字節(jié)碼 進(jìn)行處理蚯舱,才會(huì)生成 CPU 能夠識(shí)別的 機(jī)器碼
有了模塊的字節(jié)碼文件之后改化,下一次運(yùn)行程序時(shí),如果在 上次保存字節(jié)碼之后 沒(méi)有修改過(guò)源代碼枉昏,Python 將會(huì)加載 .pyc 文件并跳過(guò)編譯這個(gè)步驟
當(dāng)
Python
重編譯時(shí)陈肛,它會(huì)自動(dòng)檢查源文件和字節(jié)碼文件的時(shí)間戳如果你又修改了源代碼,下次程序運(yùn)行時(shí)兄裂,字節(jié)碼將自動(dòng)重新創(chuàng)建
提示:有關(guān)模塊以及模塊的其他導(dǎo)入方式句旱,后續(xù)課程還會(huì)逐漸展開(kāi)!
模塊是 Python 程序架構(gòu)的一個(gè)核心概念