哈嘍,大家好,我是了不起。今天給大家帶來python調用函數。
函數被定義后,本身是不會自動執行的,只有在被調用后,函數才會被執行,得到相應的結果。但是在 Python 中我們要注意一個關鍵點,就是Python不允許前向引用,即在函數定義之前,不允許調用該函數。
例如:
print plus(1,2)def plus(a,b): return a+b
運行結果為:
NameError: name 'plus' is not defined
從報錯結果可以看出,名字為plus的函數還沒進行定義(雖然我們是在后面進行了定義)。所以當我們在調用函數時,一定要確定在調用之前進行了函數定義。
我們要在調用函數時,需要正確調用函數的名稱和參數,例如我們定義了一個加法函數:
def plus(a,b): return a+b
我們在調用plus()函數時,如果傳入的參數類型不對,會報TypeError錯誤。而且有時我們傳入的參數類型不是規定類型的話,就算調用函數運行結果沒有報錯,也會產生邏輯錯誤。
例如:
# 定義plus函數,作用是求兩個正整數之和 def plus(a,b): return a+b# 調用plus函數,參數類型為'1','2' print(plus('1','2'))
輸出結果:
12
雖然上述例子的程序運行結果沒有報錯,但是結果卻與我們的預期不符,因為我們的本意是調用plus()加粗樣式函數實現兩個整數的加法。但是如果我們傳入的是字符串類型的數值時,結果就是兩個字符串的拼接。所以這個例子告訴我們一定要注意傳入參數的類型。當我們傳入正常類型的參數時,傳入的參數個數不一致時,也會報TypeError錯誤。
例如:
# 定義plus函數,作用是求兩個正整數之和 def plus(a,b): return a+b# 調用plus函數,參數為1,2,3 print(plus(1,2,3))
報錯:
TypeError: plus() takes 2 positional arguments but 3 were given
報錯原因顯示,因為plus()函數允許有且僅有2個參數,但是卻在調用時傳入了3個參數,所以程序報錯。
1. 第一種情況 程序代碼如下:
def x(f): def y(): print(1) return ydef f(): print(2)x(f)
運行結果:
無結果
分析:因為第9行中的x(f)中的f沒有帶括號,f只是一個普通的參數,所以程序只調用執行了x(f)函數,沒有調用執行f()函數。x(f)函數中雖然也定義了y()函數,但是x(f)函數中沒有調用執行y()函數,只是執行了return y。而y變量也沒有值,所以整個程序的返回值就為無結果。
2. 第二種情況 程序代碼如下:
def x(f): def y(): print(1) return ydef f(): print(2)x(f())
運行結果:
2
分析:因為第9行中的x(f())中的f()帶括號,所以程序先調用執行f()函數,先輸出2。然后2作為參數傳入到x(f)函數中,程序開始調用執行x(f)函數。x(f)函數中雖然也定義了y()函數,但是x(f)函數中沒有調用執行y()函數,只是執行了return y。而y變量也沒有值,所以調用執行x(f)函數沒有產生任何結果。因此該程序最終只輸出了2。
3. 第三種情況 程序代碼如下:
def x(f): def y(): print(1) return y()def f(): print(2)x(f)
運行結果:
1
分析:因為第9行中的x(f)中的f沒有帶括號,f只是一個普通的參數,所以程序只調用執行了x(f)函數,沒有調用執行f()函數。x(f)函數中也定義了y()函數,并且返回是y()函數。因此程序調用執行了y()函數,輸出結果是1。
4. 第四種情況
def x(f): def y(): print(1) return y()def f(): print(2)x(f())
運行結果:
2 1
分析:因為第9行中的x(f())中的f()帶括號,所以程序調用執行了f()函數,先輸出2。然后2作為參數傳入到x(f)函數中,程序開始調用執行x(f)函數。x(f)函數中也定義了y()函數,并且返回是y()函數。因此程序也調用執行了y()函數,也輸出了1。最終該程序先后輸出了2和1。
5. 第五種情況 程序代碼如下:
def x(f): def y(): print(1) print(f()) return y()def f(): #print(2) return 2x(f)
運行結果:
1 2
分析:因為第9行中的x(f)中的f沒有帶括號,f只是一個普通的參數,所以程序只是先調用執行了x(f)函數。在x(f)函數中也定義了y()函數,而且返回值是y()函數,所以程序會調用執行y()函數。在y()函數中先是執行print(1)語句,輸出1,接著執行print(f())語句,所以程序在這時也會調用執行f()函數,輸出2。最終該程序先后輸出了1和2。
好了,今天就介紹到這兒。
本文鏈接:http://www.tebozhan.com/showinfo-26-15189-0.html了解Python調用函數
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
下一篇: 一個不太好用的 IDEA 代碼生成插件