您好,登錄后才能下訂單哦!
這篇“Python函數的基礎知識點有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Python函數的基礎知識點有哪些”文章吧。
所謂函數,就是把具有獨立功能的代碼塊組織為一個小模塊,在需要的時候調用
函數的使用包含兩個步驟:
定義函數 ——封裝獨立的功能
調用函數 —— 享受封裝的成果
函數的作用,在開發程序時,使用函數可以提高編寫的效率以及代碼的重用
演練步驟
新建04_函數
項目
復制之前完成的乘法表文件
修改文件,增加函數定義multiple_table():
新建另外一個文件,使用import
導入并且調用函數
定義函數的格式如下:
def 函數名():
def
是英文define
的縮寫
函數名稱應該能夠表達函數封裝代碼的功能,方便后續的調用
函數名稱的命名應該符合標識符的命名規則
可以由字母、下劃線和數字組成
不能以數字開頭
不能與關鍵字重名
調用函數很簡單的,通過 函數名()
即可完成對函數的調用
需求
編寫一個打招呼say_hello
的函數,封裝三行打招呼的代碼
在函數下方調用打招呼的代碼
name = "小明" # 解釋器知道這里定義了一個函數 def say_hello(): print("hello 1") print("hello 2") print("hello 3") print(name) # 只有在調用函數時,之前定義的函數才會被執行 # 函數執行完成之后,會重新回到之前的程序中,繼續執行后續的代碼 say_hello() print(name)
用 單步執行 F8 和 F7 觀察以下代碼的執行過程
定義好函數之后,只表示這個函數封裝了一段代碼而已
如果不主動調用函數,函數是不會主動執行的
能否將函數調用 放在 函數定義 的上方?
不能!
因為在使用函數名調用函數之前,必須要保證Python
已經知道函數的存在
否則控制臺會提示NameError: name 'say_hello' is not defined
(名稱錯誤:say_hello 這個名字沒有被定義)
F8 Step Over可以單步執行代碼,會把函數調用看作是一行代碼直接執行
F7 Step Into可以單步執行代碼,如果是函數,會進入函數內部
在開發中,如果希望給函數添加注釋,應該在定義函數的下方,使用連續的三對引號
在連續的三對引號之間編寫對函數的說明文字
在函數調用位置,使用快捷鍵CTRL + Q
可以查看函數的說明信息
注意:因為 函數體相對比較獨立,函數定義的上方,應該和其他代碼(包括注釋)保留 兩個空行
演練需求
開發一個sum_2_num
的函數
函數能夠實現兩個數字的求和功能
演練代碼如下:
def sum_2_num(): num1 = 10 num2 = 20 result = num1 + num2 print("%d + %d = %d" % (num1, num2, result)) sum_2_num()
思考一下存在什么問題
函數只能處理 固定數值 的相加
如何解決?
如果能夠把需要計算的數字,在調用函數時,傳遞到函數內部就好了!
在函數名的后面的小括號內部填寫參數
多個參數之間使用,
分隔
def sum_2_num(num1, num2): result = num1 + num2 print("%d + %d = %d" % (num1, num2, result)) sum_2_num(50, 20)
函數,把具有獨立功能的代碼塊組織為一個小模塊,在需要的時候調用
函數的參數,增加函數的通用性,針對相同的數據處理邏輯,能夠適應更多的數據
在函數內部,把參數當做變量使用,進行需要的數據處理
函數調用時,按照函數定義的參數順序,把希望在函數內部處理的數據,通過參數傳遞
形參:定義函數時,小括號中的參數,是用來接收參數用的,在函數內部作為變量使用
實參:調用函數時,小括號中的參數,是用來把數據傳遞到函數內部用的
在程序開發中,有時候,會希望一個函數執行結束后,告訴調用者一個結果,以便調用者針對具體的結果做后續的處理
返回值是函數完成工作后,最后給調用者的一個結果
在函數中使用return
關鍵字可以返回結果
調用函數一方,可以使用變量來接收函數的返回結果
注意:
return
表示返回,后續的代碼都不會被執行
def sum_2_num(num1, num2): """對兩個數字的求和""" return num1 + num2 # 調用函數,并使用 result 變量接收計算結果 result = sum_2_num(10, 20) print("計算結果是 %d" % result)
一個函數里面又調用了另外一個函數,這就是函數嵌套調用
如果函數test2
中,調用了另外一個函數test1
那么執行到調用test1
函數時,會先把函數test1
中的任務都執行完
才會回到test2
中調用函數test1
的位置,繼續執行后續的代碼
def test1(): print("*" * 50) print("test 1") print("*" * 50) def test2(): print("-" * 50) print("test 2") test1() print("-" * 50) test2()
體會一下工作中 需求是多變 的
需求 1
定義一個print_line
函數能夠打印*
組成的一條分隔線
def print_line(char): print("*" * 50)
需求 2
定義一個函數能夠打印由任意字符組成的分隔線
def print_line(char): print(char * 50)
需求 3
定義一個函數能夠打印任意重復次數的分隔線
def print_line(char, times): print(char * times)
需求 4
定義一個函數能夠打印5 行的分隔線,分隔線要求符合需求 3
提示:工作中針對需求的變化,應該冷靜思考,不要輕易修改之前已經完成的,能夠正常執行的函數!
def print_line(char, times): print(char * times) def print_lines(char, times): row = 0 while row < 5: print_line(char, times) row += 1
模塊是 Python 程序架構的一個核心概念
模塊就好比是工具包,要想使用這個工具包中的工具,就需要導入 import這個模塊
每一個以擴展名py
結尾的Python
源代碼文件都是一個模塊
在模塊中定義的全局變量、函數都是模塊能夠提供給外界直接使用的工具
步驟
新建hm_10_分隔線模塊.py
復制hm_09_打印多條分隔線.py
中的內容,最后一行 print
代碼除外
增加一個字符串變量
name = "黑馬程序員"
新建hm_10_體驗模塊.py
文件,并且編寫以下代碼:
import hm_10_分隔線模塊 hm_10_分隔線模塊.print_line("-", 80) print(hm_10_分隔線模塊.name)
可以在一個 Python 文件中定義 變量 或者 函數
然后在另外一個文件中使用import
導入這個模塊
導入之后,就可以使用模塊名.變量
/模塊名.函數
的方式,使用這個模塊中定義的變量或者函數
模塊可以讓 曾經編寫過的代碼 方便的被 復用!
標示符可以由字母、下劃線和數字組成
不能以數字開頭
不能與關鍵字重名
注意:如果在給 Python 文件起名時,以數字開頭 是無法在
PyCharm
中通過導入這個模塊的
C
是compiled
編譯過 的意思
操作步驟
瀏覽程序目錄會發現一個__pycache__
的目錄
目錄下會有一個hm_10_分隔線模塊.cpython-35.pyc
文件,cpython-35
表示Python
解釋器的版本
這個pyc
文件是由 Python 解釋器將模塊的源碼轉換為字節碼
Python
這樣保存字節碼是作為一種啟動速度的優化
字節碼
Python
在解釋源程序時是分成兩個步驟的
首先處理源代碼,編譯生成一個二進制字節碼
再對字節碼進行處理,才會生成 CPU 能夠識別的機器碼
有了模塊的字節碼文件之后,下一次運行程序時,如果在上次保存字節碼之后 沒有修改過源代碼,Python 將會加載 .pyc 文件并跳過編譯這個步驟
當Python
重編譯時,它會自動檢查源文件和字節碼文件的時間戳
如果你又修改了源代碼,下次程序運行時,字節碼將自動重新創建
提示:有關模塊以及模塊的其他導入方式,后續課程還會逐漸展開!
模塊是 Python 程序架構的一個核心概念
以上就是關于“Python函數的基礎知識點有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。