溫馨提示×

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

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

Python基礎(chǔ)函數(shù)有哪些

發(fā)布時(shí)間:2021-11-22 14:39:55 來(lái)源:億速云 閱讀:138 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容介紹了“Python基礎(chǔ)函數(shù)有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

一、標(biāo)準(zhǔn)函數(shù) def

你可以定義一個(gè)由自己想要功能的函數(shù),以下是簡(jiǎn)單的規(guī)則:

  • 函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào) ()。

  • 任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間,圓括號(hào)之間可以用于定義參數(shù)。

  • 函數(shù)的第一行語(yǔ)句可以選擇性地使用文檔字符串—用于存放函數(shù)說(shuō)明。

  • 函數(shù)內(nèi)容以冒號(hào)起始,并且縮進(jìn)。

  • return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回 None。

語(yǔ)法:

def <name>(arg1, arg2,...argN):
    <statements>
    return <value>

二、匿名函數(shù) lambda

所謂匿名,意即不再使用 def 語(yǔ)句這樣標(biāo)準(zhǔn)的形式定義一個(gè)函數(shù)。

  • lambda 只是一個(gè)表達(dá)式,函數(shù)體比 def 簡(jiǎn)單很多。

  • lambda的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。

  • lambda 函數(shù)擁有自己的命名空間,且不能訪問(wèn)自己參數(shù)列表之外或全局命名空間里的參數(shù)。

  • 雖然lambda函數(shù)看起來(lái)只能寫一行,卻不等同于C或C++的內(nèi)聯(lián)函數(shù),后者的目的是調(diào)用小函數(shù)時(shí)不占用棧內(nèi)存從而增加運(yùn)行效率。

語(yǔ)法:

lambda [arg1 [,arg2,.....argn]]:expression

實(shí)例:

# 可寫函數(shù)說(shuō)明
sum = lambda arg1, arg2: arg1 + arg2;
# 調(diào)用sum函數(shù)
print ("相加后的值為 : ", sum( 10, 20 ))
print ("相加后的值為 : ", sum( 20, 20 ))
相加后的值為 :  30
相加后的值為 :  40

三、return 語(yǔ)句

return 語(yǔ)句用于退出函數(shù),選擇性地向調(diào)用方返回一個(gè)表達(dá)式。不帶參數(shù)值的return語(yǔ)句返回None。

語(yǔ)法:

return [表達(dá)式]

四、作用域

變量的作用域決定了在哪一部分程序可以訪問(wèn)哪個(gè)特定的變量名稱。Python的作用域一共有4種,分別是:

  • L (Local) 局部作用域

  • E (Enclosing) 閉包函數(shù)外的函數(shù)中

  • G (Global) 全局作用域

  • B (Built-in) 內(nèi)建作用域

以 L –> E –> G –>B 的規(guī)則查找,即:在局部找不到,便會(huì)去局部外的局部找(例如閉包),再找不到就會(huì)去全局找,再者去內(nèi)建中找。

x = int(2.9)  # 內(nèi)建作用域
 
g_count = 0  # 全局作用域
def outer():
    o_count = 1  # 閉包函數(shù)外的函數(shù)中
    def inner():
        i_count = 2  # 局部作用域

Python 中只有模塊(module),類(class)以及函數(shù)(def、lambda)才會(huì)引入新的作用域,其它的代碼塊(如 if/elif/else/、try/except、for/while等)是不會(huì)引入新的作用域的,也就是說(shuō)這這些語(yǔ)句內(nèi)定義的變量,外部也可以訪問(wèn)

  • 全局變量和局部變量

    • 定義在函數(shù)內(nèi)部的變量擁有一個(gè)局部作用域,定義在函數(shù)外的擁有全局作用域。

    • 局部變量只能在其被聲明的函數(shù)內(nèi)部訪問(wèn),而全局變量可以在整個(gè)程序范圍內(nèi)訪問(wèn)。調(diào)用函數(shù)時(shí),所有在函數(shù)內(nèi)聲明的變量名稱都將被加入到作用域中。

  • global 和 nonlocal關(guān)鍵字

    當(dāng)內(nèi)部作用域想修改外部作用域的變量時(shí),就要用到global和nonlocal關(guān)鍵字了。

    • global

      num = 1
      def fun1():
          global num  # 需要使用 global 關(guān)鍵字聲明
          print(num)
          num = 123
          print(num)
      fun1()
       
      以上實(shí)例輸出結(jié)果:
      1
      123
    • nonlocal

      如果要修改嵌套作用域(enclosing 作用域,外層非全局作用域)中的變量則需要 nonlocal 關(guān)鍵字了。

      def outer():
          num = 10
          def inner():
              nonlocal num  # nonlocal關(guān)鍵字聲明
              num = 100
              print(num)
          inner()
          print(num)
      outer()
       
      以上實(shí)例輸出結(jié)果:
      100
      100

“Python基礎(chǔ)函數(shù)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

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

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

AI