1. 程式人生 > 程式設計 >python函式宣告和呼叫定義及原理詳解

python函式宣告和呼叫定義及原理詳解

這篇文章主要介紹了python函式宣告和呼叫定義及原理詳解,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

函式是指程式碼片段,可以重複呼叫,比如我們前面文章接觸到的type()/len()等等都是函式,這些函式是python的內建函式,python底層封裝後用於實現某些功能。

一.函式的定義

在Python中,定義一個函式要使用def語句,依次寫出函式名、括號、括號中的引數和冒號:,然後,在縮排塊中編寫函式體,函式的返回值用return語句返回;如果沒有return語句,預設返回None:

def functionname( parameters ):
  "函式說明"
  function_suite
  return [expression]

例如:寫一個函式輸出'hello world'

def cusom_print():
  print("hello world")

二.函式的呼叫

當在py檔案中,程式碼一行一行執行,如果遇到函式的定義,編譯器會自動跳過,執行函式之後的程式碼,如果想呼叫函式直接呼叫即可。

注意:函式在呼叫之前必須先宣告。python中的內建函式如:print/type函式等等已經在python編譯器內部宣告並且定義好了,我們只管呼叫即可,不需要關心具體內部如何實現。示例程式碼如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解憂
@Blog(個人部落格地址): shuopython.com
@WeChat Official Account(微信公眾號):猿說python
@Github:www.github.com
 
@File:python_function.py
@Time:2019/10/3 10:48
 
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
def custom_print():
  print("hello world")
  print("hello world")
  print("hello world")
custom_print()

輸出結果:

hello world
hello world
hello world

程式碼分析:程式碼執行到第15行時,編譯器發現這是一個函式宣告,編譯器並不會執行,會自動跳到函式末尾第20行,編譯器發現20行是在呼叫custom_print()函式,會直接進入custom_print()函式執行函式內的程式碼第16/17/18行直到函式結束,這就是整個執行過程。

三.函式傳參

函式可以通過外部傳遞引數,比如:print()函式,可以直接傳遞字串並列印字串;也可以不傳遞引數,比如上面的custom_print函式,根據自己的需求而定.

函式宣告的時候定義的引數叫做形參;外部呼叫函式傳遞的引數叫做實參;函式的引數有兩者型別:

1.常規引數
常規而言,函式預設有幾個形參,在外部呼叫時就需要傳遞多少個實參,示例程式碼如下:

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)

輸出結果:

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.預設引數

在函式引數中,除了常規引數還有預設引數,即預設引數有一個預設值,如果外部呼叫該函式沒有給預設引數傳遞引數,該形參直接取預設引數值;如果外部呼叫時給預設引數傳遞了引數,那麼該形參的值應該等於外部傳遞的引數,帶有預設引數的函式也被稱為預設函式,示例程式碼如下:

def cusom_print4(x,y=2,z=3): # x=2,z=3 預設引數
  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)

輸出結果:

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.預設引數都有一個預設值,如果外部沒有給預設引數傳遞引數,那麼直接取預設值;否則等於外部傳遞的引數值

2.預設引數必須寫在函式形參的末尾

# 錯誤寫法
def cusom_print4(x,z):
print("cusom_print4 : x={}".format(x))

3.不定長引數

除了上面兩者,在函式的引數中還有一種不定長引數,即:函式的形參長度/型別都不固定

四.函式返回值return

函式的返回值可有可無,根據自己的使用需求而定。如果函式沒有return返回值,預設會返回None,即空值。和 False 不同,它不表示 0,也不表示空字串,而表示沒有值,也就是空值。

五.重點總結

1.函式的宣告必須在呼叫之前,否則會報錯.

2.注意預設引數的引數寫法

3.函式沒有使用return,預設返回None

這篇文章主要介紹了python函式宣告和呼叫定義及原理詳解,需要的朋友可以參考下