欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python調(diào)用帶參函數(shù),python中有參數(shù)函數(shù)嗎

python 函數(shù)參數(shù)類型

python 的函數(shù)參數(shù)類型分為4種:

創(chuàng)新互聯(lián)是專業(yè)的蓬安網(wǎng)站建設(shè)公司,蓬安接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行蓬安網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

1.位置參數(shù):調(diào)用函數(shù)時(shí)根據(jù)函數(shù)定義的參數(shù)位置來(lái)傳遞參數(shù),位置參數(shù)也可以叫做必要參數(shù),函數(shù)調(diào)用時(shí)必須要傳的參數(shù)。

當(dāng)參數(shù)滿足函數(shù)必要參數(shù)傳參的條件,函數(shù)能夠正常執(zhí)行:

add(1,2) #兩個(gè)參數(shù)的順序必須一一對(duì)應(yīng),且少一個(gè)參數(shù)都不可以

當(dāng)我們運(yùn)行上面的程序,輸出:

當(dāng)函數(shù)需要兩個(gè)必要參數(shù),但是調(diào)用函數(shù)只給了一個(gè)參數(shù)時(shí),程序會(huì)拋出異常

add(1)

當(dāng)我們運(yùn)行上面的程序,輸出:

當(dāng)函數(shù)需要兩個(gè)必要參數(shù),但是調(diào)用函數(shù)只給了三個(gè)參數(shù)時(shí),程序會(huì)拋出異常

add(1,2,3)

當(dāng)我們運(yùn)行上面的程序,輸出

2.關(guān)鍵字參數(shù):用于函數(shù)調(diào)用,通過(guò)“鍵-值”形式加以指定。可以讓函數(shù)更加清晰、容易使用,同時(shí)也清除了參數(shù)的順序需求。

add(1,2) # 這種方式傳參,必須按順序傳參:x對(duì)應(yīng)1,y對(duì)應(yīng):2

add(y=2,x=1) #以關(guān)健字方式傳入?yún)?shù)(可以不按順序)

正確的調(diào)用方式

add(x=1, y=2)

add(y=2, x=1)

add(1, y=2)

以上調(diào)用方式都是允許的,能夠正常執(zhí)行

錯(cuò)誤的調(diào)用方式

add(x=1, 2)

add(y=2, 1)

以上調(diào)用都會(huì)拋出SyntaxError 異常

上面例子可以看出:有位置參數(shù)時(shí),位置參數(shù)必須在關(guān)鍵字參數(shù)的前面,但關(guān)鍵字參數(shù)之間不存在先后順序的

3.默認(rèn)參數(shù):用于定義函數(shù),為參數(shù)提供默認(rèn)值,調(diào)用函數(shù)時(shí)可傳可不傳該默認(rèn)參數(shù)的值,所有位置參數(shù)必須出現(xiàn)在默認(rèn)參數(shù)前,包括函數(shù)定義和調(diào)用,有多個(gè)默認(rèn)參數(shù)時(shí),調(diào)用的時(shí)候,既可以按順序提供默認(rèn)參數(shù),也可以不按順序提供部分默認(rèn)參數(shù)。當(dāng)不按順序提供部分默認(rèn)參數(shù)時(shí),需要把參數(shù)名寫(xiě)上

默認(rèn)參數(shù)的函數(shù)定義

上面示例第一個(gè)是正確的定義位置參數(shù)的方式,第二個(gè)是錯(cuò)誤的,因?yàn)槲恢脜?shù)在前,默認(rèn)參數(shù)在后

def add1(x=1,y) 的定義會(huì)拋出如下異常

默認(rèn)參數(shù)的函數(shù)調(diào)用

注意:定義默認(rèn)參數(shù)默認(rèn)參數(shù)最好不要定義為可變對(duì)象,容易掉坑

不可變對(duì)象:該對(duì)象所指向的內(nèi)存中的值不能被改變,int,string,float,tuple

可變對(duì)象,該對(duì)象所指向的內(nèi)存中的值可以被改變,dict,list

這里只要理解一下這個(gè)概念就行或者自行百度,后續(xù)會(huì)寫(xiě)相關(guān)的專題文章講解

舉一個(gè)簡(jiǎn)單示例

4.可變參數(shù)區(qū)別:定義函數(shù)時(shí),有時(shí)候我們不確定調(diào)用的時(shí)候會(huì)多少個(gè)參數(shù),j就可以使用可變參數(shù)

可變參數(shù)主要有兩類:

*args: (positional argument) 允許任意數(shù)量的可選位置參數(shù)(參數(shù)),將被分配給一個(gè)元組, 參數(shù)名前帶*,args只是約定俗成的變量名,可以替換其他名稱

**kwargs:(keyword argument) 允許任意數(shù)量的可選關(guān)鍵字參數(shù),,將被分配給一個(gè)字典,參數(shù)名前帶**,kwargs只是約定俗成的變量名,可以替換其他名稱

*args 的用法

args 是用來(lái)傳遞一個(gè)非鍵值對(duì)的可變數(shù)量的參數(shù)列表給函數(shù)

語(yǔ)法是使用 符號(hào)的數(shù)量可變的參數(shù); 按照慣例,通常是使用arg這個(gè)單詞,args相當(dāng)于一個(gè)變量名,可以自己定義的

在上面的程序中,我們使用* args作為一個(gè)可變長(zhǎng)度參數(shù)列表傳遞給add()函數(shù)。 在函數(shù)中,我們有一個(gè)循環(huán)實(shí)現(xiàn)傳遞的參數(shù)計(jì)算和輸出結(jié)果。

還可以直接傳遞列表或者數(shù)組的方式傳遞參數(shù),以數(shù)組或者列表方式傳遞參數(shù)名前面加(*) 號(hào)

理解* * kwargs

**kwargs 允許你將不定長(zhǎng)度的鍵值對(duì), 作為參數(shù)傳遞給函數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動(dòng)組裝為一個(gè)dict

下篇詳細(xì)講解 *args, **kwargs 的參數(shù)傳遞和使用敬請(qǐng)關(guān)注

Python函數(shù)的參數(shù)類型

Python函數(shù)的參數(shù)類型主要包括必選參數(shù)、可選參數(shù)、可變參數(shù)、位置參數(shù)和關(guān)鍵字參數(shù),本文介紹一下他們的定義以及可變數(shù)據(jù)類型參數(shù)傳遞需要注意的地方。

必選參數(shù)(Required arguments)是必須輸入的參數(shù),比如下面的代碼,必須輸入2個(gè)參數(shù),否則就會(huì)報(bào)錯(cuò):

其實(shí)上面例子中的參數(shù) num1和num2也屬于關(guān)鍵字參數(shù),比如可以通過(guò)如下方式調(diào)用:

執(zhí)行結(jié)果:

可選參數(shù)(Optional arguments)可以不用傳入函數(shù),有一個(gè)默認(rèn)值,如果沒(méi)有傳入會(huì)使用默認(rèn)值,不會(huì)報(bào)錯(cuò)。

位置參數(shù)(positional arguments)根據(jù)其在函數(shù)定義中的位置調(diào)用,下面是pow()函數(shù)的幫助信息:

x,y,z三個(gè)參數(shù)的的順序是固定的,并且不能使用關(guān)鍵字:

輸出:

在上面的pow()函數(shù)幫助信息中可以看到位置參數(shù)后面加了一個(gè)反斜杠 / ,這是python內(nèi)置函數(shù)的語(yǔ)法定義,Python開(kāi)發(fā)人員不能在python3.8版本之前的代碼中使用此語(yǔ)法。但python3.0到3.7版本可以使用如下方式定義位置參數(shù):

星號(hào)前面的參數(shù)為位置參數(shù)或者關(guān)鍵字參數(shù),星號(hào)后面是強(qiáng)制關(guān)鍵字參數(shù),具體介紹見(jiàn)強(qiáng)制關(guān)鍵字參數(shù)。

python3.8版本引入了強(qiáng)制位置參數(shù)(Positional-Only Parameters),也就是我們可以使用反斜杠 / 語(yǔ)法來(lái)定義位置參數(shù)了,可以寫(xiě)成如下形式:

來(lái)看下面的例子:

python3.8運(yùn)行:

不能使用關(guān)鍵字參數(shù)形式賦值了。

可變參數(shù) (varargs argument) 就是傳入的參數(shù)個(gè)數(shù)是可變的,可以是0-n個(gè),使用星號(hào)( * )將輸入?yún)?shù)自動(dòng)組裝為一個(gè)元組(tuple):

執(zhí)行結(jié)果:

關(guān)鍵字參數(shù)(keyword argument)允許將任意個(gè)含參數(shù)名的參數(shù)導(dǎo)入到python函數(shù)中,使用雙星號(hào)( ** ),在函數(shù)內(nèi)部自動(dòng)組裝為一個(gè)字典。

執(zhí)行結(jié)果:

上面介紹的參數(shù)可以混合使用:

結(jié)果:

注意:由于傳入的參數(shù)個(gè)數(shù)不定,所以當(dāng)與普通參數(shù)一同使用時(shí),必須把帶星號(hào)的參數(shù)放在最后。

強(qiáng)制關(guān)鍵字參數(shù)(Keyword-Only Arguments)是python3引入的特性,可參考:。 使用一個(gè)星號(hào)隔開(kāi):

在位置參數(shù)一節(jié)介紹過(guò)星號(hào)前面的參數(shù)可以是位置參數(shù)和關(guān)鍵字參數(shù)。星號(hào)后面的參數(shù)都是強(qiáng)制關(guān)鍵字參數(shù),必須以指定參數(shù)名的方式傳參,如果強(qiáng)制關(guān)鍵字參數(shù)沒(méi)有設(shè)置默認(rèn)參數(shù),調(diào)用函數(shù)時(shí)必須傳參。

執(zhí)行結(jié)果:

也可以在可變參數(shù)后面命名關(guān)鍵字參數(shù),這樣就不需要星號(hào)分隔符了:

執(zhí)行結(jié)果:

在Python對(duì)象及內(nèi)存管理機(jī)制中介紹了python中的參數(shù)傳遞屬于對(duì)象的 引用傳遞 (pass by object reference),在編寫(xiě)函數(shù)的時(shí)候需要特別注意。

先來(lái)看個(gè)例子:

執(zhí)行結(jié)果:

l1 和 l2指向相同的地址,由于列表可變,l1改變時(shí),l2也跟著變了。

接著看下面的例子:

結(jié)果:

l1沒(méi)有變化!為什么不是[1, 2, 3, 4]呢?

l = l + [4]表示創(chuàng)建一個(gè)“末尾加入元素 4“的新列表,并讓 l 指向這個(gè)新的對(duì)象,l1沒(méi)有進(jìn)行任何操作,因此 l1 的值不變。如果要改變l1的值,需要加一個(gè)返回值:

結(jié)果:

下面的代碼執(zhí)行結(jié)果又是什么呢?

執(zhí)行結(jié)果:

和第一個(gè)例子一樣,l1 和 l2指向相同的地址,所以會(huì)一起改變。這個(gè)問(wèn)題怎么解決呢?

可以使用下面的方式:

也可以使用淺拷貝或者深度拷貝,具體使用方法可參考Python對(duì)象及內(nèi)存管理機(jī)制。這個(gè)問(wèn)題在Python編程時(shí)需要特別注意。

本文主要介紹了python函數(shù)的幾種參數(shù)類型:必選參數(shù)、可選參數(shù)、可變參數(shù)、位置參數(shù)、強(qiáng)制位置參數(shù)、關(guān)鍵字參數(shù)、強(qiáng)制關(guān)鍵字參數(shù),注意他們不是完全獨(dú)立的,比如必選參數(shù)、可選參數(shù)也可以是關(guān)鍵字參數(shù),位置參數(shù)可以是必選參數(shù)或者可選參數(shù)。

另外,python中的參數(shù)傳遞屬于對(duì)象的 引用傳遞 ,在對(duì)可變數(shù)據(jù)類型進(jìn)行參數(shù)傳遞時(shí)需要特別注意,如有必要,使用python的拷貝方法。

參考文檔:

--THE END--

python為什么調(diào)用帶形參的函數(shù)可以不傳參數(shù)

這個(gè)不是不傳,是re模塊自己傳的match對(duì)象。

這個(gè)函數(shù)也只能是一個(gè)參數(shù),這是re模塊自己的機(jī)制

python 函數(shù)變量 參數(shù)怎么使用

剛學(xué)用Python的時(shí)候,特別是看一些庫(kù)的源碼時(shí),經(jīng)常會(huì)看到func(*args, **kwargs)這樣的函數(shù)定義,這個(gè)*和**讓人有點(diǎn)費(fèi)解。其實(shí)只要把函數(shù)參數(shù)定義搞清楚了,就不難理解了。

先說(shuō)說(shuō)函數(shù)定義,我們都知道,下面的代碼定義了一個(gè)函數(shù)funcA

def funcA():

pass

顯然,函數(shù)funcA沒(méi)有參數(shù)(同時(shí)啥也不干:D)。

下面這個(gè)函數(shù)funcB就有兩個(gè)參數(shù)了,

def funcB(a, b):

print a

print b

調(diào)用的時(shí)候,我們需要使用函數(shù)名,加上圓括號(hào)擴(kuò)起來(lái)的參數(shù)列表,比如 funcB(100, 99),執(zhí)行結(jié)果是:

100

99

很明顯,參數(shù)的順序和個(gè)數(shù)要和函數(shù)定義中一致,如果執(zhí)行funcB(100),Python會(huì)報(bào)錯(cuò)的:

TypeError: funcB() takes exactly 2 arguments (1 given)

我們可以在函數(shù)定義中使用參數(shù)默認(rèn)值,比如

def funcC(a, b=0):

print a

print b

在函數(shù)funcC的定義中,參數(shù)b有默認(rèn)值,是一個(gè)可選參數(shù),如果我們調(diào)用funcC(100),b會(huì)自動(dòng)賦值為0。

OK,目前為止,我們要定義一個(gè)函數(shù)的時(shí)候,必須要預(yù)先定義這個(gè)函數(shù)需要多少個(gè)參數(shù)(或者說(shuō)可以接受多少個(gè)參數(shù))。一般情況下這是沒(méi)問(wèn)題的,但是也有在定義函數(shù)的時(shí)候,不能知道參數(shù)個(gè)數(shù)的情況(想一想C語(yǔ)言里的printf函數(shù)),在Python里,帶*的參數(shù)就是用來(lái)接受可變數(shù)量參數(shù)的。看一個(gè)例子

def funcD(a, b, *c):

print a

print b

print "length of c is: %d " % len(c)

print c

調(diào)用funcD(1, 2, 3, 4, 5, 6)結(jié)果是

1

2

length of c is: 4

(3, 4, 5, 6)

我們看到,前面兩個(gè)參數(shù)被a、b接受了,剩下的4個(gè)參數(shù),全部被c接受了,c在這里是一個(gè)tuple。我們?cè)谡{(diào)用funcD的時(shí)候,至少要傳遞2個(gè)參數(shù),2個(gè)以上的參數(shù),都放到c里了,如果只有兩個(gè)參數(shù),那么c就是一個(gè)empty tuple。

好了,一顆星我們弄清楚了,下面輪到兩顆星。

上面的例子里,調(diào)用函數(shù)的時(shí)候,傳遞的參數(shù)都是根據(jù)位置來(lái)跟函數(shù)定義里的參數(shù)表匹配的,比如funcB(100, 99)和funcB(99, 100)的執(zhí)行結(jié)果是不一樣的。在Python里,還支持一種用關(guān)鍵字參數(shù)(keyword argument)調(diào)用函數(shù)的辦法,也就是在調(diào)用函數(shù)的時(shí)候,明確指定參數(shù)值付給那個(gè)形參。比如還是上面的funcB(a, b),我們通過(guò)這兩種方式調(diào)用

funcB(a=100, b=99)

funcB(b=99, a=100)

結(jié)果跟funcB(100, 99)都是一樣的,因?yàn)槲覀冊(cè)谑褂藐P(guān)鍵字參數(shù)調(diào)用的時(shí)候,指定了把100賦值給a,99賦值給b。也就是說(shuō),關(guān)鍵字參數(shù)可以讓我們?cè)谡{(diào)用函數(shù)的時(shí)候打亂參數(shù)傳遞的順序!

另外,在函數(shù)調(diào)用中,可以混合使用基于位置匹配的參數(shù)和關(guān)鍵字參數(shù),前題是先給出固定位置的參數(shù),比如

def funcE(a, b, c):

print a

print b

print c

調(diào)用funcE(100, 99, 98)和調(diào)用funcE(100, c=98, b=99)的結(jié)果是一樣的。

好了,經(jīng)過(guò)以上鋪墊,兩顆星總算可以出場(chǎng)了:

如果一個(gè)函數(shù)定義中的最后一個(gè)形參有 ** (雙星號(hào))前綴,所有正常形參之外的其他的關(guān)鍵字參數(shù)都將被放置在一個(gè)字典中傳遞給函數(shù),比如:

def funcF(a, **b):

print a

for x in b:

print x + ": " + str(b[x])

調(diào)用funcF(100, c='你好', b=200),執(zhí)行結(jié)果

100

c: 你好

b: 200

大家可以看到,b是一個(gè)dict對(duì)象實(shí)例,它接受了關(guān)鍵字參數(shù)b和c。

python函數(shù)調(diào)用的參數(shù)傳遞

python的函數(shù)參數(shù)傳遞是"引用傳遞(地址傳遞)"。

python中賦值語(yǔ)句的過(guò)程(x = 1):先申請(qǐng)一段內(nèi)存分配給一個(gè)整型對(duì)象來(lái)存儲(chǔ)數(shù)據(jù)1,然后讓變量x去指向這個(gè)對(duì)象,實(shí)際上就是指向這段內(nèi)存(這里有點(diǎn)和C語(yǔ)言中的指針類似)。

在Python中,會(huì)為每個(gè)層次生成一個(gè)符號(hào)表,里層能調(diào)用外層中的變量,而外層不能調(diào)用里層中的變量,并且當(dāng)外層和里層有同名變量時(shí),外層變量會(huì)被里層變量屏蔽掉。函數(shù)? 調(diào)用 ?會(huì)為函數(shù)局部變量生成一個(gè)新的符號(hào)表。

局部變量:作用于該函數(shù)內(nèi)部,一旦函數(shù)執(zhí)行完成,該變量就被回收。

全局變量:它是在函數(shù)外部定義的,作用域是整個(gè)文件。全局變量可以直接在函數(shù)里面應(yīng)用,但是如果要在函數(shù)內(nèi)部改變?nèi)肿兞浚仨毷褂胓lobal關(guān)鍵字進(jìn)行聲明。

注意 :默認(rèn)值在函數(shù)? 定義 ?作用域被解析

在定義函數(shù)時(shí),就已經(jīng)執(zhí)行力它的局部變量

python中不可變類型是共享內(nèi)存地址的:把相同的兩個(gè)不可變類型數(shù)據(jù)賦給兩個(gè)不同變量a,b,a,b在內(nèi)存中的地址是一樣的。

python怎么給函數(shù)傳參

函數(shù)參數(shù)傳遞機(jī)制問(wèn)題在本質(zhì)上是調(diào)用函數(shù)(過(guò)程)和被調(diào)用函數(shù)(過(guò)程)在調(diào)用發(fā)生時(shí)進(jìn)行通信的方法問(wèn)題。基本的參數(shù)傳遞機(jī)制有兩

種:值傳遞和引用傳遞。

推薦:Python教程

值傳遞(passl-by-value)過(guò)程中,被調(diào)函數(shù)的形式參數(shù)作為被調(diào)函數(shù)的局部變量處理,即在堆棧中開(kāi)辟了內(nèi)存空間以存放由主調(diào)函數(shù)放

進(jìn)來(lái)的實(shí)參的值,從而成為了實(shí)參的一個(gè)副本。值傳遞的特點(diǎn)是被調(diào)函數(shù)對(duì)形式參數(shù)的任何操作都是作為局部變量進(jìn)行,不會(huì)影響主調(diào)函

數(shù)的實(shí)參變量的值。

引用傳遞(pass-by-reference)過(guò)程中,被調(diào)函數(shù)的形式參數(shù)雖然也作為局部變量在堆棧中開(kāi)辟了內(nèi)存空間,但是這時(shí)存放的是由主調(diào)函

數(shù)放進(jìn)來(lái)的實(shí)參變量的地址。被調(diào)函數(shù)對(duì)形參的任何操作都被處理成間接尋址,即通過(guò)堆棧中存放的地址訪問(wèn)主調(diào)函數(shù)中的實(shí)參變量。正

因?yàn)槿绱耍徽{(diào)函數(shù)對(duì)形參做的任何操作都影響了主調(diào)函數(shù)中的實(shí)參變量。

更多技術(shù)請(qǐng)關(guān)注Python視頻教程。

網(wǎng)頁(yè)標(biāo)題:python調(diào)用帶參函數(shù),python中有參數(shù)函數(shù)嗎
本文路徑:http://chinadenli.net/article34/hsphpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化網(wǎng)站設(shè)計(jì)公司網(wǎng)站內(nèi)鏈網(wǎng)站導(dǎo)航App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)