目錄在函式定義階段括號定義的引數,叫做形式引數,簡稱形參,本質就是變數名
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...