python兩個參數函數,python 兩個參數

python self 為什么是兩個參數

Python中默認參數self的理解

創新互聯公司專注于阜寧網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供阜寧營銷型網站建設,阜寧網站制作、阜寧網頁設計、阜寧網站官網定制、成都微信小程序服務,打造阜寧網絡公司原創品牌,更為您提供阜寧網站排名全網營銷落地服務。

類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱,但是在調用這個方法的時候你不為這個參數賦值,Python會提供這個值。這個特別的變量指對象本身,按照慣例它的名稱是self。

雖然你可以給這個參數任何名稱,但是強烈建議你使用self這個名稱——其他名稱都是不贊成你使用的。使用一個標準的名稱有很多優點——你的程序讀者可以迅速識別它,如果使用self的話,還有些IDE(集成開發環境)也可以幫助你。

給C++/Java/C#程序員的注釋Python中的self等價于C++中的self指針和Java、C#中的this參考。

你一定很奇怪Python如何給self賦值以及為何你不需要給它賦值。舉一個例子會使此變得清晰。假如你有一個類稱為MyClass和這個類的一個實例MyObject。當你調用這個對象的方法MyObject.method(arg1, arg2)的時候,這會由Python自動轉為MyClass.method(MyObject, arg1, arg2)——這就是self的原理了。

這也意味著如果你有一個不需要參數的方法,你還是得給這個方法定義一個self參數。

聲明add()方法時,若不加self,則提示

TypeError: add() takes exactly 2 arguments (3 given)

File "D:\PythonWorkplace\PythonDemo\Tet.py", line 15, in module

test.add(1,3)

錯誤。

拓展一下:

self在Python里不是關鍵字。self代表當前對象的地址。self能避免非限定調用造成的全局變量。

self是一種習慣,如上面的程序,把sayHi(self)換成sayHi(fles),同樣可以得到正確的輸出。

python中定義函數fun(a,n),輸入a和n兩個參數,輸出a的n次方 。

#include stdio.h

int fun(int a,int n)

{

int t;

for(t=1;n;n--)

? t*=a;

return t;

}

int main()

{

int a,n;

scanf("%d%d",a,n);

printf("%d\n",fun(a,n));

return 0;

}

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中兩個函數間參數傳遞問題

def?plus(a,b):

z?=?a?+?1

c?=?b?+?5

return?(z,c)

(q,w)?=?plus(1,2)

plud(q,w)

##我這里假設a=1,b=2

##首先plus(1,2),得到z=2,c=7,通過return?讓(q,w)=(z,c)的值,然后plud(q,w)即可實現將z,c的值傳遞給下一個函數

python中一個函數有兩個參數a、b ,a是列表,b是一個數字,找出a列表中兩數之和等于b,打印出這些數

def shili(a,b):

answer=[]

for x in a:

if x=b/2:

y=b-x

if y in a :

answer.append((x,y))

return answer

a=[1,2,3,4,5,6,7,8,9]

b=9

c=shili(a,b)

print(c)

#輸出結果:[(1, 8), (2, 7), (3, 6), (4, 5)]

本文名稱:python兩個參數函數,python 兩個參數
文章分享:http://m.kartarina.com/article22/hegijc.html

成都網站建設公司_創新互聯,為您提供微信公眾號微信小程序小程序開發Google網站維護App開發

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

小程序開發
主站蜘蛛池模板: 精品无码国产自产拍在线观看| 免费无码一区二区三区| 久久久久亚洲AV成人无码网站 | 免费无遮挡无码视频在线观看| 亚洲综合无码一区二区| 无码不卡av东京热毛片| 亚洲区日韩区无码区| 亚洲精品无码专区久久久 | 精品久久久无码人妻中文字幕| 好爽毛片一区二区三区四无码三飞 | 亚洲国产精品无码久久一区二区| 亚洲AV无码一区二区乱子仑| 亚洲精品午夜无码专区| 免费无码国产在线观国内自拍中文字幕| 亚洲一区二区三区无码中文字幕| 在线A级毛片无码免费真人| 久久精品无码专区免费青青 | 亚洲成AV人片在线观看无码| 国产精品白浆无码流出| 无码人妻一区二区三区一| 亚洲国产精品无码中文字| 熟妇人妻中文a∨无码| 日韩夜夜高潮夜夜爽无码| 亚洲成a∧人片在线观看无码| 无码少妇一区二区| 久久亚洲AV无码精品色午夜麻| 精品人妻少妇嫩草AV无码专区| 爽到高潮无码视频在线观看| 亚洲久热无码av中文字幕| 精品久久久久久久无码| 久久亚洲精品成人无码网站| 无码人妻丰满熟妇区免费| 亚洲AV无码国产精品麻豆天美| 成人无码AV一区二区| 在线观看免费无码视频| 中国少妇无码专区| 无码人妻AV一二区二区三区| 无套内射在线无码播放| 91嫩草国产在线无码观看| 无码中文字幕一区二区三区| 亚洲中文字幕无码久久|