成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

了解Python調(diào)用函數(shù)

開發(fā) 前端
函數(shù)被定義后,本身是不會自動執(zhí)行的,只有在被調(diào)用后,函數(shù)才會被執(zhí)行,得到相應(yīng)的結(jié)果。但是Python不允許前向引用,即在函數(shù)定義之前,不允許調(diào)用該函數(shù)。

哈嘍,大家好,我是了不起。今天給大家?guī)韕ython調(diào)用函數(shù)。

一、定義函數(shù)與調(diào)用函數(shù)的順序

函數(shù)被定義后,本身是不會自動執(zhí)行的,只有在被調(diào)用后,函數(shù)才會被執(zhí)行,得到相應(yīng)的結(jié)果。但是在 Python 中我們要注意一個關(guān)鍵點,就是Python不允許前向引用,即在函數(shù)定義之前,不允許調(diào)用該函數(shù)。

例如:

print plus(1,2)
def plus(a,b):  
    return a+b  

運行結(jié)果為:

NameError: name 'plus' is not defined  

從報錯結(jié)果可以看出,名字為plus的函數(shù)還沒進行定義(雖然我們是在后面進行了定義)。所以當(dāng)我們在調(diào)用函數(shù)時,一定要確定在調(diào)用之前進行了函數(shù)定義。

二、正確使用參數(shù)

我們要在調(diào)用函數(shù)時,需要正確調(diào)用函數(shù)的名稱和參數(shù),例如我們定義了一個加法函數(shù):

def plus(a,b):  
    return a+b  

我們在調(diào)用plus()函數(shù)時,如果傳入的參數(shù)類型不對,會報TypeError錯誤。而且有時我們傳入的參數(shù)類型不是規(guī)定類型的話,就算調(diào)用函數(shù)運行結(jié)果沒有報錯,也會產(chǎn)生邏輯錯誤。

例如:

# 定義plus函數(shù),作用是求兩個正整數(shù)之和  
def plus(a,b):  
    return a+b
# 調(diào)用plus函數(shù),參數(shù)類型為'1','2'  
print(plus('1','2'))  

輸出結(jié)果:

12  

雖然上述例子的程序運行結(jié)果沒有報錯,但是結(jié)果卻與我們的預(yù)期不符,因為我們的本意是調(diào)用plus()加粗樣式函數(shù)實現(xiàn)兩個整數(shù)的加法。但是如果我們傳入的是字符串類型的數(shù)值時,結(jié)果就是兩個字符串的拼接。所以這個例子告訴我們一定要注意傳入?yún)?shù)的類型。當(dāng)我們傳入正常類型的參數(shù)時,傳入的參數(shù)個數(shù)不一致時,也會報TypeError錯誤。

例如:

# 定義plus函數(shù),作用是求兩個正整數(shù)之和  
def plus(a,b):  
    return a+b
# 調(diào)用plus函數(shù),參數(shù)為1,2,3  
print(plus(1,2,3))  

報錯:

TypeError: plus() takes 2 positional arguments but 3 were given  

報錯原因顯示,因為plus()函數(shù)允許有且僅有2個參數(shù),但是卻在調(diào)用時傳入了3個參數(shù),所以程序報錯。

三、函數(shù)與函數(shù)之間的調(diào)用

1. 第一種情況 程序代碼如下:

def x(f):  
    def y():  
        print(1)  
    return y
def f():  
    print(2)
x(f)  

運行結(jié)果:

無結(jié)果

分析:因為第9行中的x(f)中的f沒有帶括號,f只是一個普通的參數(shù),所以程序只調(diào)用執(zhí)行了x(f)函數(shù),沒有調(diào)用執(zhí)行f()函數(shù)。x(f)函數(shù)中雖然也定義了y()函數(shù),但是x(f)函數(shù)中沒有調(diào)用執(zhí)行y()函數(shù),只是執(zhí)行了return y。而y變量也沒有值,所以整個程序的返回值就為無結(jié)果。

2. 第二種情況 程序代碼如下:

def x(f):  
    def y():  
        print(1)  
    return y
def f():  
    print(2)
x(f())  

運行結(jié)果:

2  

分析:因為第9行中的x(f())中的f()帶括號,所以程序先調(diào)用執(zhí)行f()函數(shù),先輸出2。然后2作為參數(shù)傳入到x(f)函數(shù)中,程序開始調(diào)用執(zhí)行x(f)函數(shù)。x(f)函數(shù)中雖然也定義了y()函數(shù),但是x(f)函數(shù)中沒有調(diào)用執(zhí)行y()函數(shù),只是執(zhí)行了return y。而y變量也沒有值,所以調(diào)用執(zhí)行x(f)函數(shù)沒有產(chǎn)生任何結(jié)果。因此該程序最終只輸出了2。

3. 第三種情況 程序代碼如下:

def x(f):  
    def y():  
        print(1)  
    return y()
def f():  
    print(2)
x(f)  

運行結(jié)果:

1

分析:因為第9行中的x(f)中的f沒有帶括號,f只是一個普通的參數(shù),所以程序只調(diào)用執(zhí)行了x(f)函數(shù),沒有調(diào)用執(zhí)行f()函數(shù)。x(f)函數(shù)中也定義了y()函數(shù),并且返回是y()函數(shù)。因此程序調(diào)用執(zhí)行了y()函數(shù),輸出結(jié)果是1。

4. 第四種情況

def x(f):  
    def y():  
        print(1)  
    return y()
def f():  
    print(2)
x(f())

運行結(jié)果:

2  
1  

分析:因為第9行中的x(f())中的f()帶括號,所以程序調(diào)用執(zhí)行了f()函數(shù),先輸出2。然后2作為參數(shù)傳入到x(f)函數(shù)中,程序開始調(diào)用執(zhí)行x(f)函數(shù)。x(f)函數(shù)中也定義了y()函數(shù),并且返回是y()函數(shù)。因此程序也調(diào)用執(zhí)行了y()函數(shù),也輸出了1。最終該程序先后輸出了2和1。

5. 第五種情況 程序代碼如下:

def x(f):  
    def y():  
        print(1)  
        print(f())  
    return y()
def f():  
    #print(2)  
    return 2
x(f)  

運行結(jié)果:

1  
2  

分析:因為第9行中的x(f)中的f沒有帶括號,f只是一個普通的參數(shù),所以程序只是先調(diào)用執(zhí)行了x(f)函數(shù)。在x(f)函數(shù)中也定義了y()函數(shù),而且返回值是y()函數(shù),所以程序會調(diào)用執(zhí)行y()函數(shù)。在y()函數(shù)中先是執(zhí)行print(1)語句,輸出1,接著執(zhí)行print(f())語句,所以程序在這時也會調(diào)用執(zhí)行f()函數(shù),輸出2。最終該程序先后輸出了1和2。

好了,今天就介紹到這兒。

責(zé)任編輯:趙寧寧 來源: Python都知道
相關(guān)推薦

2017-03-31 09:35:14

Android函數(shù)Android庫

2022-10-31 08:02:07

Python函數(shù)式編程

2025-01-16 16:36:00

2021-04-24 10:19:41

Python函數(shù)指向

2025-02-19 10:39:26

Python高階函數(shù)函數(shù)名

2021-03-24 10:00:32

Python遞歸函數(shù)Python基礎(chǔ)

2022-12-09 11:04:14

straceLinux

2016-08-11 10:11:07

JavaScript函數(shù)編程

2016-08-11 10:34:37

Javascript函數(shù)編程

2010-10-09 14:00:10

mysql CONCA

2010-10-25 15:04:39

Oracle文本函數(shù)

2010-03-05 11:04:00

C調(diào)用Python函數(shù)

2010-10-25 15:20:23

Oracle數(shù)據(jù)轉(zhuǎn)換函

2023-12-04 07:09:53

函數(shù)遞歸python

2010-01-28 13:35:41

調(diào)用C++函數(shù)

2010-07-28 15:29:18

Flex函數(shù)

2010-05-31 09:19:53

PHP

2010-10-25 17:13:08

oracle分組函數(shù)

2010-09-16 14:38:55

Sql server表

2017-10-26 08:53:38

前端JavaScript函數(shù)式編程
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品日韩 | 国产极品粉嫩美女呻吟在线看人 | 粉嫩粉嫩芽的虎白女18在线视频 | 久久久国产一区 | 欧美一级二级视频 | 欧美6一10sex性hd | 欧美aaa级 | 欧美精品一区二区三区在线播放 | 精品国产aⅴ | 999久久久 | 中文字幕高清免费日韩视频在线 | 欧美综合自拍 | 蜜臀av日日欢夜夜爽一区 | 国产一区在线免费观看 | 日韩欧美国产精品一区二区三区 | 国产欧美日韩综合精品一区二区 | 四虎永久在线精品免费一区二 | 中文字幕在线一区二区三区 | 91精品久久久久久久久久入口 | 国产精品免费一区二区三区 | 国产精品999| 日韩在线观看一区二区三区 | 日韩一区二区三区在线 | 99久久影院 | 久在线 | 一级a性色生活片久久毛片 一级特黄a大片 | 亚洲视频在线观看免费 | 视频一区在线播放 | 在线亚州 | 爱草视频 | 色婷婷婷婷色 | 91亚洲国产 | 日日夜精品视频 | 久操伊人| 伊人久久在线观看 | 在线观看国产视频 | 欧美专区在线 | 国产一级在线 | 亚洲一二三区免费 | 天天操 天天操 | 九九热国产视频 |