第七章 函式基礎之函式的引數06

2022-05-15 01:29:32 字數 1796 閱讀 8349

目錄在函式定義階段括號定義的引數,叫做形式引數,簡稱形參,本質就是變數名

def func(x, y):

print(x)

print(y)

在函式呼叫階段括號內傳入的引數,叫做實參,本質就是變數的值

func(1, 2)
在函式定義階段內,按照從左到右的順序依次定義的形參,叫做位置形參

特點:按照位置定義的形參,都必須被傳值,多乙個不行(除非形參有*args或者**kwargs),少乙個也不行

def func(x, y):

print(x)

print(y)

在函式呼叫階段,按照從左到右的順序依次定義的實參,叫做位置實參

特點:按照位置為對應的形參依次傳值

func(1, 2)
在呼叫函式時,按照key:value的形式為指定的引數傳值,稱之為關鍵字實參

特點:可以打破位置的限制,但是能為指定的形參賦值

func(y=2, x=1)
注意

可以混用位置實參和關鍵字實參,但是位置實參必須在關鍵字實參的左邊。

可以混用位置實參和關鍵字實參,但不能對乙個形參重複賦值。

func(x, y=2)

func(y=2, x) # syntaxerror: positional argument follows keyword argument

func(x, x=1) # nameerror: name 'x' is not defined

定義階段,就已經被賦值

特點:在定義階段就已經被賦值,意味著在呼叫時可以不用為其賦值。

def func(x, y=10):

print(x)

print(y)

func(2)

注意

位置形參必須放在預設形參的左邊。

預設形參的值只在定義階段賦值一次,也就是說預設引數的值在函式定義階段就已經固定了。

m = 10

def foo(x=m):

print(x)

m = 111

foo() # 10

預設引數的值應該是不可變型別

def register(name, hobby):

hobby_list =

print(f" prefer '")

print(f" prefer ")

register('nick', 'read')

def register(name, hobby, hobby_list=):

print(f" prefer '")

print(f" prefer ")

register('nick', 'read')

register('tank', 'zuipao')

register('jason', 'piao')

說明:上下兩段函式效果是一樣的

實參的應用:取決於個人習慣

形參的應用:

大多數情況的呼叫值一樣,就應該將該引數定義成位置形參

大多數情況的呼叫值一樣,就應該將該引數定義成預設形參

第七章 函式

1.ansi c 允許函式原型的使用,函式宣告提供給編譯器和之後的呼叫函式返回值型別,引數型別和數量的資訊,而k c用單獨的列表給出引數的型別,編譯器只記住函式的返回值型別,但不儲存函式的引數數量和型別 2.沒有return語句的函式,隱式的返回 3.函式的原型可以單獨放於乙個標頭檔案中,一定要具有...

第七章 函式

樂趣在於發現。程式設計最大的樂趣在於編寫自己的函式 使用c 函式步驟 1.函式定義 2.函式原型 3.呼叫函式 函式分為兩類 有返回值和沒有返回值的函式。void函式表示沒有返回值 void funcitonname parameterlist include using namespace std...

第七章 函式

1.千萬不要返回區域性物件的引用 理解返回引用至關重要的是 千萬不能返回區域性變數的引用。當函式執行完畢時,將釋放分配給區域性物件的儲存空間。此時,對區域性物件 的引用就會指向不確定的記憶體。考慮下面的程式 disaster function returns a reference to a loc...