零基礎Python教程-函數及模塊的使用
今天和大家分享一下零基礎Python教程中的-函數及模塊的運用,在學習本節內容之前,我們先來一起做道數學題。已知:半徑分別為0.1、0.2、0.3的三個圓,分別求這三個圓的面積。很多讀者可能要笑一下,這不是小學的數學問題嗎?
?函數
S = π * r * r
# 那么
S1 = π * 0.1 * 0.1
S1 = π * 0.2 * 0.2
S1 = π * 0.3 * 0.3
在上面的表達式中,我們做了3次求圓的面積,這樣的代碼實際上就是重復代碼。
對于上面的表達式,我們可以將面積公式封裝到函數中。在需要計算面積的時候,調用函數即可。
在Python中可以使用def關鍵字來定義函數,和變量一樣每個函數也有一個名字,而且命名規則跟變量的命名規則是一致的。
在Python中,定義一個函數要使用def語句,依次寫出函數名、括號、括號中的參數和冒號,然后,在縮進塊中編寫函數體,函數的返回值用return語句返回。
在了解函數的定義及作用之后,我們對上述代碼進行重構。重構就是在不影響代碼執行結果的前提下對代碼的結構進行調整。
def circle_area(r):
S = 3.14 * r * r print('%.4f' %S)
circle_area(0.1)
circle_area(0.2)
circle_area(0.3)
很多編程語言都支持函數,但是Python對函數處理與其他編程語言有一個顯著的區別就是:Python支持函數的參數設有默認值。
例如:我們寫一個計算x*x的函數。
def power(x):
return x * x
當我們調用power函數時,必須傳入有且僅有的一個參數x。
那么問題來了,如果我們要計算x*x*x怎么辦?你可能會說我們再定義一個新的函數計算。那要是需要計算x*x*x*x又該怎么辦呢?我們不能無限的定義新函數。
這個時候,相信聰明的你已經想到了。我們可以將power(x)重新定義為power(x,n)。用來計算x的n次方。
def power(x, n):
s = 1
while n > 0:
= n - 1 s = s * x return s
power(2,5)
這樣我們就可以計算任意n次方。
但是此時我們調用舊函數就會報錯,原因是我們增加了一個參數,導致舊的代碼因為缺少一個參數而無法正常調用:
這個時候,Python的默認參數就派上用場了。
def power(x, n=2):
s = 1
while n > 0:
= n - 1
s = s * x
return s
這樣,當我們調用power(5)時,相當于調用power(5, 2)。
注意:
一是必選參數在前,默認參數在后,否則Python的解釋器會報錯(思考一下為什么默認參數不能放在必選參數前面)
二是如何設置默認參數。
當函數有多個參數時,把變化大的參數放前面,變化小的參數放后面。變化小的參數就可以作為默認參數。
使用默認參數有什么好處?最大的好處是能降低調用函數的難度。
模塊
相信很多朋友在給函數、變量命名時都非常糾結。至少我本人是這樣的。因為Python沒有函數重載的概念,那么我們在一個.py文件中命名了兩個同名函數應該怎么辦呢?例如:
def test():
print("Good")
def test():
print("Bad")test()
我們如何解決這種問題呢?Python引入了模塊的概念。我們可以將這兩個函數分別寫到不同的文件中,通過import關鍵字進行導入從而引用。
# good.py
def test():
print("Good")
# bad.py
def test():
print("Bad")
當我們想要使用test()函數時,可以如下:
from good import test
# 輸出Good
test()
#輸出Bad
from bad import test
test()
但是,下面這種情況,程序會調用最后一個模塊的函數:
from good import test
from bad import test
test()
需要說明的是,如果我們導入的模塊除了定義函數之外還中有可以執行代碼,那么Python解釋器在導入這個模塊時就會執行這些代碼,事實上我們可能并不希望如此,因此如果我們在模塊中編寫了執行代碼,最好是將這些執行代碼放入如下所示的條件中,這樣的話除非直接運行該模塊,if條件下的這些代碼是不會執行的,因為只有直接執行的模塊的名字才是“\_\_main\_\_”。
通俗的理解就是:當你的腳本文件是被直接運行的時候,則if__name__=='__main__'后的可執行代碼就會執行,如果你的代碼是被導入的,那么就不會直接運行之后的代碼。
好了,今天的分享到這里就結束了,希望大家可以持續關注馬哥教育官網,每天都會有大量優質的文章與大家分享歐!免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。