python函數(shù)聲明和調(diào)用定義及原理詳解
這篇文章主要介紹了python函數(shù)聲明和調(diào)用定義及原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
函數(shù)是指代碼片段,可以重復(fù)調(diào)用,比如我們前面文章接觸到的type()/len()等等都是函數(shù),這些函數(shù)是python的內(nèi)置函數(shù),python底層封裝后用于實(shí)現(xiàn)某些功能。
一.函數(shù)的定義
在Python中,定義一個(gè)函數(shù)要使用def語句,依次寫出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào):,然后,在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return語句返回;如果沒有return語句,默認(rèn)返回None:
def functionname( parameters ): "函數(shù)說明" function_suite return [expression]
例如:寫一個(gè)函數(shù)輸出'hello world'
def cusom_print(): print("hello world")
二.函數(shù)的調(diào)用
當(dāng)在py文件中,代碼一行一行執(zhí)行,如果遇到函數(shù)的定義,編譯器會(huì)自動(dòng)跳過,執(zhí)行函數(shù)之后的代碼,如果想調(diào)用函數(shù)直接調(diào)用即可。
注意:函數(shù)在調(diào)用之前必須先聲明。python中的內(nèi)置函數(shù)如:print/type函數(shù)等等已經(jīng)在python編譯器內(nèi)部聲明并且定義好了,我們只管調(diào)用即可,不需要關(guān)心具體內(nèi)部如何實(shí)現(xiàn)。示例代碼如下:
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解憂 @Blog(個(gè)人博客地址): shuopython.com @WeChat Official Account(微信公眾號(hào)):猿說python @Github:www.github.com @File:python_function.py @Time:2019/10/3 10:48 @Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅(jiān)持不懈地積累! """ def custom_print(): print("hello world") print("hello world") print("hello world") custom_print()
輸出結(jié)果:
hello world hello world hello world
代碼分析:代碼執(zhí)行到第15行時(shí),編譯器發(fā)現(xiàn)這是一個(gè)函數(shù)聲明,編譯器并不會(huì)執(zhí)行,會(huì)自動(dòng)跳到函數(shù)末尾第20行,編譯器發(fā)現(xiàn)20行是在調(diào)用custom_print()函數(shù),會(huì)直接進(jìn)入custom_print()函數(shù)執(zhí)行函數(shù)內(nèi)的代碼第16/17/18行直到函數(shù)結(jié)束,這就是整個(gè)運(yùn)行過程。
三.函數(shù)傳參
函數(shù)可以通過外部傳遞參數(shù),比如:print()函數(shù),可以直接傳遞字符串并打印字符串;也可以不傳遞參數(shù),比如上面的custom_print函數(shù),根據(jù)自己的需求而定.
函數(shù)聲明的時(shí)候定義的參數(shù)叫做形參;外部調(diào)用函數(shù)傳遞的參數(shù)叫做實(shí)參;函數(shù)的參數(shù)有兩者類型:
1.常規(guī)參數(shù)
常規(guī)而言,函數(shù)默認(rèn)有幾個(gè)形參,在外部調(diào)用時(shí)就需要傳遞多少個(gè)實(shí)參,示例代碼如下:
def cusom_print1(x): print("cusom_print1 : x={}".format(x)) def cusom_print2(x,y): print("cusom_print2 : x={}".format(x)) print("cusom_print2 : y={}".format(y)) def cusom_print3(x,y,z): print("cusom_print3 : x={}".format(x)) print("cusom_print3 : y={}".format(y)) print("cusom_print3 : z={}".format(z)) cusom_print1(1) cusom_print2(1,2) cusom_print3(1,2,3)
輸出結(jié)果:
cusom_print1 : x=1 cusom_print2 : x=1 cusom_print2 : y=2 cusom_print3 : x=1 cusom_print3 : y=2 cusom_print3 : z=3
2.缺省參數(shù)
在函數(shù)參數(shù)中,除了常規(guī)參數(shù)還有缺省參數(shù),即缺省參數(shù)有一個(gè)默認(rèn)值,如果外部調(diào)用該函數(shù)沒有給缺省參數(shù)傳遞參數(shù),該形參直接取默認(rèn)參數(shù)值;如果外部調(diào)用時(shí)給缺省參數(shù)傳遞了參數(shù),那么該形參的值應(yīng)該等于外部傳遞的參數(shù),帶有缺省參數(shù)的函數(shù)也被稱為缺省函數(shù),示例代碼如下:
def cusom_print4(x,y=2,z=3): # x=2,z=3 缺省參數(shù) print("cusom_print4 : x={}".format(x)) print("cusom_print4 : y={}".format(y)) print("cusom_print4 : z={}".format(z)) print("***"*20) cusom_print4(1) cusom_print4(1,4) cusom_print4(1,4,3)
輸出結(jié)果:
cusom_print4 : x=1 cusom_print4 : y=2 cusom_print4 : z=3 ************************************************************ cusom_print4 : x=1 cusom_print4 : y=4 cusom_print4 : z=3 ************************************************************ cusom_print4 : x=1 cusom_print4 : y=4 cusom_print4 : z=3 ************************************************************
注意:
1.缺省參數(shù)都有一個(gè)默認(rèn)值,如果外部沒有給缺省參數(shù)傳遞參數(shù),那么直接取默認(rèn)值;否則等于外部傳遞的參數(shù)值
2.缺省參數(shù)必須寫在函數(shù)形參的末尾
# 錯(cuò)誤寫法 def cusom_print4(x,y=2,z): print("cusom_print4 : x={}".format(x))
3.不定長參數(shù)
除了上面兩者,在函數(shù)的參數(shù)中還有一種不定長參數(shù),即:函數(shù)的形參長度/類型都不固定
四.函數(shù)返回值return
函數(shù)的返回值可有可無,根據(jù)自己的使用需求而定。如果函數(shù)沒有return返回值,默認(rèn)會(huì)返回None,即空值。和 False 不同,它不表示 0,也不表示空字符串,而表示沒有值,也就是空值。
五.重點(diǎn)總結(jié)
1.函數(shù)的聲明必須在調(diào)用之前,否則會(huì)報(bào)錯(cuò).
2.注意缺省參數(shù)的參數(shù)寫法
3.函數(shù)沒有使用return,默認(rèn)返回None
這篇文章主要介紹了python函數(shù)聲明和調(diào)用定義及原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
相關(guān)文章
基于Python實(shí)現(xiàn)視頻自動(dòng)下載軟件
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)一個(gè)自動(dòng)下載視頻、彈幕、評(píng)論的軟件,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下2022-08-08python3+PyQt5實(shí)現(xiàn)自定義窗口部件Counters
這篇文章主要為大家詳細(xì)介紹了python3+PyQt5實(shí)現(xiàn)自定義窗口部件,Counters自定窗口部件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04在阿里云服務(wù)器上配置CentOS+Nginx+Python+Flask環(huán)境
這篇文章主要介紹了在阿里云服務(wù)器上配置CentOS+Nginx+Python+Flask環(huán)境的教程,值得一提的是這里的方案用Nginx作反向代理而使用Gunicorn作wsgi服務(wù)器,需要的朋友可以參考下2016-06-06Python OpenCV對(duì)圖像像素進(jìn)行操作
大家好,本篇文章主要講的是Python OpenCV對(duì)圖像像素進(jìn)行操作,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01python用moviepy對(duì)視頻進(jìn)行簡單的處理
這篇文章主要介紹了python如何用moviepy對(duì)視頻進(jìn)行簡單的處理,幫助大家更好的利用python處理視頻,感興趣的朋友可以了解下2021-03-03wxpython+pymysql實(shí)現(xiàn)用戶登陸功能
這篇文章主要介紹了wxpython+pymysql實(shí)現(xiàn)用戶登陸功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11利用pytorch實(shí)現(xiàn)對(duì)CIFAR-10數(shù)據(jù)集的分類
今天小編就為大家分享一篇利用pytorch實(shí)現(xiàn)對(duì)CIFAR-10數(shù)據(jù)集的分類,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01python中elasticsearch_dsl模塊的使用方法
這篇文章主要介紹了python中elasticsearch_dsl模塊的使用方法,elasticsearch-dsl是基于elasticsearch-py封裝實(shí)現(xiàn)的,提供了更簡便的操作elasticsearch的方法2022-09-09