⑴ python的函數和參數
parameter 是函數定義的參數形式
argument 是函數調用時傳入的參數實體。
對於函數調用的傳參模式,一般有兩種:
此外,
也是關鍵字傳參
python的函數參數定義一般來說有五種: 位置和關鍵字參數混合 , 僅位置參數 , 僅關鍵字參數 , 可變位置參數 , 可變關鍵字參數 。其中僅位置參數的方式僅僅是一個概念,python語法中暫時沒有這樣的設計。
通常我們見到的函數是位置和關鍵字混合的方式。
既可以用關鍵字又可以用位置調用
或
這種方式的定義只能使用關鍵字傳參的模式
f(*some_list) 與 f(arg1, arg2, ...) (其中some_list = [arg1, arg2, ...])是等價的
網路模塊request的request方法的設計
多數的可選參數被設計成可變關鍵字參數
有多種方法能夠為函數定義輸出:
非常晦澀
如果使用可變對象作為函數的默認參數,會導致默認參數在所有的函數調用中被共享。
例子1:
addItem方法的data設計了一個默認參數,使用不當會造成默認參數被共享。
python裡面,函數的默認參數被存在__default__屬性中,這是一個元組類型
例子2:
在例子1中,默認參數是一個列表,它是mutable的數據類型,當它寫進 __defauts__屬性中時,函數addItem的操作並不會改變它的id,相當於 __defauts__只是保存了data的引用,對於它的內存數據並不關心,每次調用addItem,都可以修改 addItem.__defauts__中的數據,它是一個共享數據。
如果默認參數是一個imutable類型,情況將會不一樣,你無法改變默認參數第一次存入的值。
例子1中,連續調用addItem('world') 的結果會是
而不是期望的
⑵ Python中return語句的參數有哪些呢
在Python中,return語句可以帶有參數,被稱為返回值。它可以將函數執行後的結果返回給調用者。
return語句可以有多種寫法,包括以下兩種:
return:這種寫法是僅僅使用return關埋乎鍵字,表示退出函數並返回None。
return value:這種寫法中,value是一個表達式,可以是函數計算後的結果,李液舉也可以是其他變數或常量,表示退出函數並返回該值。
下面是一個包含return語句的例子:
Copy code
def add_num(a, b):
result = a + b
return result
在這個例子中,add_num()函數將兩個數加起來,保存在result變數中,並使用return語句將結果返回給調用者。
return語句是Python函數中非常重要和常用的哪碧一種語句,它可以幫助程序員將函數執行的值返回給調用者,便於在程序中進行數據處理和邏輯控制。
⑶ python 函數參數類型
python 的函數參數類型分為4種:
1.位置參數:調用函數時根據函數定義的參數位置來傳遞參數,位置參數也可以叫做必要參數,函數調用時必須要傳的參數。
當參數滿足函數必要參數傳參的條件,函數能夠正常執行:
add(1,2) #兩個參數的順序必須一一對應,且少一個參數都不可以
當我們運行上面的程序,輸出:
當函數需要兩個必要參數,但是調用函數只給了一個參數時,程序會拋出異常
add(1)
當我們運行上面的程序,輸出:
當函數需要兩個必要參數,但是調用函數只給了三個參數時,程序會拋出異常
add(1,2,3)
當我們運行上面的程序,輸出
2.關鍵字參數:用於函數調用,通過「鍵-值」形式加以指定。可以讓函數更加清晰、容易使用,同時也清除了參數的順序需求。
add(1,2) # 這種方式傳參,必須按順序傳參:x對應1,y對應:2
add(y=2,x=1) #以關健字方式傳入參數(可以不按順序)
正確的調用方式
add(x=1, y=2)
add(y=2, x=1)
add(1, y=2)
以上調用方式都是允許的,能夠正常執行
錯誤的調用方式
add(x=1, 2)
add(y=2, 1)
以上調用都會拋出SyntaxError 異常
上面例子可以看出:有位置參數時,位置參數必須在關鍵字參數的前面,但關鍵字參數之間不存在先後順序的
3.默認參數:用於定義函數,為參數提供默認值,調用函數時可傳可不傳該默認參數的值,所有位置參數必須出現在默認參數前,包括函數定義和調用,有多個默認參數時,調用的時候,既可以按順序提供默認參數,也可以不按順序提供部分默認參數。當不按順序提供部分默認參數時,需要把參數名寫上
默認參數的函數定義
上面示例第一個是正確的定義位置參數的方式,第二個是錯誤的,因為位置參數在前,默認參數在後
def add1(x=1,y) 的定義會拋出如下異常
默認參數的函數調用
注意:定義默認參數默認參數最好不要定義為可變對象,容易掉坑
不可變對象:該對象所指向的內存中的值不能被改變,int,string,float,tuple
可變對象,該對象所指向的內存中的值可以被改變,dict,list
這里只要理解一下這個概念就行或者自行網路,後續會寫相關的專題文章講解
舉一個簡單示例
4.可變參數區別:定義函數時,有時候我們不確定調用的時候會多少個參數,j就可以使用可變參數
可變參數主要有兩類:
*args: (positional argument) 允許任意數量的可選位置參數(參數),將被分配給一個元組, 參數名前帶*,args只是約定俗成的變數名,可以替換其他名稱
**kwargs:(keyword argument) 允許任意數量的可選關鍵字參數,,將被分配給一個字典,參數名前帶**,kwargs只是約定俗成的變數名,可以替換其他名稱
*args 的用法
args 是用來傳遞一個非鍵值對的可變數量的參數列表給函數
語法是使用 符號的數量可變的參數; 按照慣例,通常是使用arg這個單詞,args相當於一個變數名,可以自己定義的
在上面的程序中,我們使用* args作為一個可變長度參數列表傳遞給add()函數。 在函數中,我們有一個循環實現傳遞的參數計算和輸出結果。
還可以直接傳遞列表或者數組的方式傳遞參數,以數組或者列表方式傳遞參數名前面加(*) 號
理解* * kwargs
**kwargs 允許你將不定長度的鍵值對, 作為參數傳遞給函數,這些關鍵字參數在函數內部自動組裝為一個dict
下篇詳細講解 *args, **kwargs 的參數傳遞和使用敬請關注
⑷ python print 如何在輸出中插入變數
pythonprint變數的值需要使用print語句。具體用法如下:
1.首先,為了能夠合理地計算輸出變數的值,需要在輸出變數值中定義一個變數,例如定義變數名a。定義的格式為:[a = 6] python會自動將a定義為整數變數,這與使用C語言不同。
(4)python中輸出參數擴展閱讀:
1.在Python2中,print語句的最簡單形式是printA,等效於執行sys.stdout.write(str(A)+'\n')。
2.如果傳遞逗號作為分隔符並傳遞其他參數(參數),則這些參數將傳遞給str()函數,並且在列印時將在每個參數之間使用最終空格。
3.例如,列印A,B和C等效於sys.stdout.write(''。join(map(str([A,B,C])))))))))。如果在列印語句的末尾添加逗號,則不添加換行符(列印機),然後:printA等效於sys.stdout.write(str(A))。
4.從Python 2.0開始,Python重新發布了print >>語法,該語法用於將print語句重定向到最終輸出字元串。例如,print >> output,A等效於output.write(str(A)+' n')。