溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python函數(shù)怎么創(chuàng)建

發(fā)布時間:2021-12-17 17:19:22 來源:億速云 閱讀:139 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“python函數(shù)怎么創(chuàng)建”,在日常操作中,相信很多人在python函數(shù)怎么創(chuàng)建問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”python函數(shù)怎么創(chuàng)建”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

一、文件的處理

在學(xué)習(xí)爬蟲的時候?qū)?shù)據(jù)的儲存和文件的處理有一定的了解,

這里就不多說了,鏈接:數(shù)據(jù)的存儲(一),數(shù)據(jù)的存儲(二)

掌握好文件處理的步驟很好理解,對于其他文件的處理不懂的(數(shù)據(jù)庫)之類的,可以先了解open()即可。

二、函數(shù)

函數(shù)概述:

將一個功能寫好,我們給它起一個名字,方便我們下次使用,減少代碼的重復(fù)。

1、創(chuàng)建一個函數(shù)并計算1+2并且輸出

    def add():

x = 1+2

print(x)

    add()

def 聲明一個函數(shù)

add 你聲明一個函數(shù)起的名字

add()調(diào)用該函數(shù)

2、返回值

按照1中的例子,我們?nèi)绻幌氪蛴的值,我們下面需要用到這個x,我只想得到這個x的值。就會用到函數(shù)的返回值。我們可以將1中的函數(shù)修改成有返回值的函數(shù)。

    def add():

x = 1+2

return x

    print(add()) 

return:返回值,即x。值得注意的是:return代表一個函數(shù)的結(jié)束。后面的代碼不再執(zhí)行。

add():此時我們調(diào)用add()就不會輸出x的值,而add()就代表x的值,我們想要輸出的話,輸出add()即可。

有更多疑問?

如果1中我們沒有返回值,我們輸出add()返回的內(nèi)容是什么?

可不可以返回多個值?

可以自己試試!

3、參數(shù)

想一個問題,我們add這個函數(shù)只是固定的計算了1+2,如果我們想要計算用戶輸入的值怎么辦?這里就用到了參數(shù)。

3.1位置參數(shù)(必須傳入值,一一對應(yīng),多了,少了都會報錯。)

    a =int(input("輸入a:"))

    b =int(input("輸入b:"))

    def add(x,y):

return x+y

    c = add(a,b)

    print(c)

add(a,b):將a,b傳遞到add()函數(shù)中,a對應(yīng)的是x,b對應(yīng)的是y。x,y是形式參數(shù),a,d是實際參數(shù)。a,b和x,y是一一對應(yīng)的關(guān)系。

另:我們也可以這樣傳參add(1,2)位置傳參,也可以add(x=1,y=b)關(guān)鍵字傳參,也可以混合使用,但是位置傳參在前,關(guān)鍵字傳參在后。add(x=1,b)不可以。

3.2默認(rèn)參數(shù)(可傳,可不傳)

默認(rèn)參數(shù):當(dāng)傳入的有值時我們就是用傳入的值,當(dāng)沒有傳入值時,我們可以使用默認(rèn)值。

注意:默認(rèn)參數(shù)必須在位置參數(shù)的后面。

    a =int(input("輸入a:"))

    b =int(input("輸入b:"))

    def add(x,y=10):

return x+y

    c = add(a)

    print(c)

    d = add(a,b)

    print(d)

add(x,y=10):中的y=10就是默認(rèn)參數(shù),當(dāng)傳入2個參數(shù)時,就不使用默認(rèn)值,當(dāng)只傳入一個參數(shù)的時候,那么第二個參數(shù)就會傳入默認(rèn)值,即10。

3.3動態(tài)參數(shù)

動態(tài)參數(shù):當(dāng)我們不確定函數(shù)需要傳遞的參數(shù)數(shù)量時,比如計算多個數(shù)的和,我們就可以用到動態(tài)參數(shù)。

    def add(*args):

sum = 0

for i in args:

      sum +=i

return sum

    add(1,2,3)

    add(1,1,1,1,1,1)

*args:在參數(shù)名之前加一個*號之后,就可以傳遞任意數(shù)量的參數(shù),args這個名字可以換,沒有問題,但是相當(dāng)于大家都統(tǒng)一這樣寫,這樣大家一看就知道,動態(tài)參數(shù)的位置需要放在默認(rèn)參數(shù)的前面,這句話不是說一定要有默認(rèn)參數(shù),如果有需要放在默認(rèn)參數(shù)前。

    def add(**kwargs):

print(kwargs)

    add(a=1,b=2,c=3)

    add(a=1)

**kwargs:加上兩個*以關(guān)鍵字的形式傳遞,和我們的字典一樣a:1,b:2,c:3,輸出的是一個字典。

注意:如果兩者都需要,*args需要放在**kwargs的前面

總結(jié):傳遞參數(shù)的順序:位置參數(shù),*args,默認(rèn)參數(shù),**kwargs,沒有其中任意一個參數(shù),也還是這個順序。當(dāng)有動態(tài)參數(shù)時,默認(rèn)參數(shù)必須以關(guān)鍵字的形式傳遞。

3.4動態(tài)傳遞列表和字典。

    list = [1,2,3]

    def add(*args):

print(args)

如果我們直接add(list),那么我們輸出的也是一個列表,即沒有分開

我們想達(dá)到add(1,2,3)這樣的效果,只需要這樣:add(*list)

同理:有這樣一個字典dict={"name":"wmm","sex":"nan"}

只需要add(**dict)即可。

另:通常還有人將函數(shù)叫為方法,函數(shù)和方法是一個東西,不過我們通常將內(nèi)置函數(shù)叫函數(shù),自定義的叫方法,這個無所謂。

誤區(qū):

這個誤區(qū)曾經(jīng)在廖雪峰老師的博客中看到,覺得很有意思,在這里分享給大家。

def add(list=[])

    list.append(1)

    print(list)

add()#結(jié)果:[1]

add()#結(jié)果:[1,1]

add()#結(jié)果:[1,1,1]

我們發(fā)現(xiàn),每次調(diào)用的時候都會在原來的list中添加,而我們想要的效果是只添加成[1]

我們可以這樣寫:

def add(list=[])

    if list !=None:

list =[]

    list.append(1)

    print(list)

即可。

三、全局變量和局部變量

x = 1

def fun():

    print(x)

這里的x為全局變量,在函數(shù)中可以引用到

def fun():

    x=1

print(x)

報錯:這里x為局部變量,在全局中引用不到,所以報錯。

x = 1

def fun():

    x+=10

print(x)

報錯:我們想要在函數(shù)中改變改變?nèi)肿兞康闹担枰胓lobal聲明他是一個全局變量。

即修改成:

x = 1

def fun():

    global x

    x+=10

print(x)

到此,關(guān)于“python函數(shù)怎么創(chuàng)建”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI