1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      python中函數(shù)類型 python函數(shù)

      Python的函數(shù)都有哪些?

      Python 函數(shù)

      創(chuàng)新互聯(lián)建站是一家集網(wǎng)站設(shè)計制作、成都做網(wǎng)站、網(wǎng)站頁面設(shè)計、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)網(wǎng)站建設(shè)公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗,以探求精品塑造與理念升華,設(shè)計最適合用戶的網(wǎng)站頁面。 合作只是第一步,服務(wù)才是根本,我們始終堅持講誠信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場環(huán)境中,互促共生。

      函數(shù)是組織好的,可重復(fù)使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。

      函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。你已經(jīng)知道Python提供了許多內(nèi)建函數(shù),比如print()。但你也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)。

      定義一個函數(shù)

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

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

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

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

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

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

      語法

      def functionname( parameters ): ? "函數(shù)_文檔字符串"

      function_suite

      return [expression]

      默認(rèn)情況下,參數(shù)值和參數(shù)名稱是按函數(shù)聲明中定義的順序匹配起來的。

      實例

      以下為一個簡單的Python函數(shù),它將一個字符串作為傳入?yún)?shù),再打印到標(biāo)準(zhǔn)顯示設(shè)備上。

      實例(Python 2.0+)

      def printme( str ): ? "打印傳入的字符串到標(biāo)準(zhǔn)顯示設(shè)備上"

      print str

      return

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

      定義一個函數(shù)只給了函數(shù)一個名稱,指定了函數(shù)里包含的參數(shù),和代碼塊結(jié)構(gòu)。

      這個函數(shù)的基本結(jié)構(gòu)完成以后,你可以通過另一個函數(shù)調(diào)用執(zhí)行,也可以直接從Python提示符執(zhí)行。

      如下實例調(diào)用了printme()函數(shù):

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      # 定義函數(shù)def printme( str ): ? "打印任何傳入的字符串"

      print str

      return

      # 調(diào)用函數(shù)printme("我要調(diào)用用戶自定義函數(shù)!")printme("再次調(diào)用同一函數(shù)")

      以上實例輸出結(jié)果:

      我要調(diào)用用戶自定義函數(shù)!再次調(diào)用同一函數(shù)

      參數(shù)傳遞

      在 python 中,類型屬于對象,變量是沒有類型的:

      a=[1,2,3]

      a="Runoob"

      以上代碼中,[1,2,3]?是 List 類型,"Runoob"?是 String 類型,而變量 a 是沒有類型,她僅僅是一個對象的引用(一個指針),可以是 List 類型對象,也可以指向 String 類型對象。

      可更改(mutable)與不可更改(immutable)對象

      在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象。

      不可變類型:變量賦值?a=5?后再賦值?a=10,這里實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當(dāng)于新生成了a。

      可變類型:變量賦值?la=[1,2,3,4]?后再賦值?la[2]=5?則是將 list la 的第三個元素值更改,本身la沒有動,只是其內(nèi)部的一部分值被修改了。

      python 函數(shù)的參數(shù)傳遞:

      不可變類型:類似 c++ 的值傳遞,如 整數(shù)、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內(nèi)部修改 a 的值,只是修改另一個復(fù)制的對象,不會影響 a 本身。

      可變類型:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改后fun外部的la也會受影響

      python 中一切都是對象,嚴(yán)格意義我們不能說值傳遞還是引用傳遞,我們應(yīng)該說傳不可變對象和傳可變對象。

      python 傳不可變對象實例

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      def ChangeInt( a ): ? ?a = 10

      b = 2ChangeInt(b)print b # 結(jié)果是 2

      實例中有 int 對象 2,指向它的變量是 b,在傳遞給 ChangeInt 函數(shù)時,按傳值的方式復(fù)制了變量 b,a 和 b 都指向了同一個 Int 對象,在 a=10 時,則新生成一個 int 值對象 10,并讓 a 指向它。

      傳可變對象實例

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      # 可寫函數(shù)說明def changeme( mylist ): ? "修改傳入的列表"

      mylist.append([1,2,3,4])

      print "函數(shù)內(nèi)取值: ", mylist

      return

      # 調(diào)用changeme函數(shù)mylist = [10,20,30]changeme( mylist )print "函數(shù)外取值: ", mylist

      實例中傳入函數(shù)的和在末尾添加新內(nèi)容的對象用的是同一個引用,故輸出結(jié)果如下:

      函數(shù)內(nèi)取值: ?[10, 20, 30, [1, 2, 3, 4]]函數(shù)外取值: ?[10, 20, 30, [1, 2, 3, 4]]

      參數(shù)

      以下是調(diào)用函數(shù)時可使用的正式參數(shù)類型:

      必備參數(shù)

      關(guān)鍵字參數(shù)

      默認(rèn)參數(shù)

      不定長參數(shù)

      必備參數(shù)

      必備參數(shù)須以正確的順序傳入函數(shù)。調(diào)用時的數(shù)量必須和聲明時的一樣。

      調(diào)用printme()函數(shù),你必須傳入一個參數(shù),不然會出現(xiàn)語法錯誤:

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      #可寫函數(shù)說明def printme( str ): ? "打印任何傳入的字符串"

      print str

      return

      #調(diào)用printme函數(shù)printme()

      以上實例輸出結(jié)果:

      Traceback (most recent call last):

      File "test.py", line 11, in module

      printme()TypeError: printme() takes exactly 1 argument (0 given)

      關(guān)鍵字參數(shù)

      關(guān)鍵字參數(shù)和函數(shù)調(diào)用關(guān)系緊密,函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來確定傳入的參數(shù)值。

      使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時參數(shù)的順序與聲明時不一致,因為 Python 解釋器能夠用參數(shù)名匹配參數(shù)值。

      以下實例在函數(shù) printme() 調(diào)用時使用參數(shù)名:

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      #可寫函數(shù)說明def printme( str ): ? "打印任何傳入的字符串"

      print str

      return

      #調(diào)用printme函數(shù)printme( str = "My string")

      以上實例輸出結(jié)果:

      My string

      下例能將關(guān)鍵字參數(shù)順序不重要展示得更清楚:

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      #可寫函數(shù)說明def printinfo( name, age ): ? "打印任何傳入的字符串"

      print "Name: ", name

      print "Age ", age

      return

      #調(diào)用printinfo函數(shù)printinfo( age=50, name="miki" )

      以上實例輸出結(jié)果:

      Name: ?mikiAge ?50

      默認(rèn)參數(shù)

      調(diào)用函數(shù)時,默認(rèn)參數(shù)的值如果沒有傳入,則被認(rèn)為是默認(rèn)值。下例會打印默認(rèn)的age,如果age沒有被傳入:

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      #可寫函數(shù)說明def printinfo( name, age = 35 ): ? "打印任何傳入的字符串"

      print "Name: ", name

      print "Age ", age

      return

      #調(diào)用printinfo函數(shù)printinfo( age=50, name="miki" )printinfo( name="miki" )

      以上實例輸出結(jié)果:

      Name: ?mikiAge ?50Name: ?mikiAge ?35

      不定長參數(shù)

      你可能需要一個函數(shù)能處理比當(dāng)初聲明時更多的參數(shù)。這些參數(shù)叫做不定長參數(shù),和上述2種參數(shù)不同,聲明時不會命名。基本語法如下:

      def functionname([formal_args,] *var_args_tuple ): ? "函數(shù)_文檔字符串"

      function_suite

      return [expression]

      加了星號(*)的變量名會存放所有未命名的變量參數(shù)。不定長參數(shù)實例如下:

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      # 可寫函數(shù)說明def printinfo( arg1, *vartuple ): ? "打印任何傳入的參數(shù)"

      print "輸出: "

      print arg1

      for var in vartuple: ? ? ?print var

      return

      # 調(diào)用printinfo 函數(shù)printinfo( 10 )printinfo( 70, 60, 50 )

      以上實例輸出結(jié)果:

      輸出:10輸出:706050

      匿名函數(shù)

      python 使用 lambda 來創(chuàng)建匿名函數(shù)。

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

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

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

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

      語法

      lambda函數(shù)的語法只包含一個語句,如下:

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

      如下實例:

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      # 可寫函數(shù)說明sum = lambda arg1, arg2: arg1 + arg2

      # 調(diào)用sum函數(shù)print "相加后的值為 : ", sum( 10, 20 )print "相加后的值為 : ", sum( 20, 20 )

      以上實例輸出結(jié)果:

      相加后的值為 : ?30相加后的值為 : ?40

      return 語句

      return語句[表達(dá)式]退出函數(shù),選擇性地向調(diào)用方返回一個表達(dá)式。不帶參數(shù)值的return語句返回None。之前的例子都沒有示范如何返回數(shù)值,下例便告訴你怎么做:

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      # 可寫函數(shù)說明def sum( arg1, arg2 ): ? # 返回2個參數(shù)的和."

      total = arg1 + arg2

      print "函數(shù)內(nèi) : ", total

      return total

      # 調(diào)用sum函數(shù)total = sum( 10, 20 )

      以上實例輸出結(jié)果:

      函數(shù)內(nèi) : ?30

      變量作用域

      一個程序的所有的變量并不是在哪個位置都可以訪問的。訪問權(quán)限決定于這個變量是在哪里賦值的。

      變量的作用域決定了在哪一部分程序你可以訪問哪個特定的變量名稱。兩種最基本的變量作用域如下:

      全局變量

      局部變量

      全局變量和局部變量

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

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

      實例(Python 2.0+)

      #!/usr/bin/python# -*- coding: UTF-8 -*-

      total = 0 # 這是一個全局變量# 可寫函數(shù)說明def sum( arg1, arg2 ): ? #返回2個參數(shù)的和."

      total = arg1 + arg2 # total在這里是局部變量.

      print "函數(shù)內(nèi)是局部變量 : ", total

      return total

      #調(diào)用sum函數(shù)sum( 10, 20 )print "函數(shù)外是全局變量 : ", total

      以上實例輸出結(jié)果:

      函數(shù)內(nèi)是局部變量 : ?30函數(shù)外是全局變量 : ?0

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

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

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

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

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

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

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

      add(1)

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

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

      add(1,2,3)

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

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

      add(1,2) # 這種方式傳參,必須按順序傳參:x對應(yīng)1,y對應(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í)行

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

      add(x=1, 2)

      add(y=2, 1)

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

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

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

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

      上面示例第一個是正確的定義位置參數(shù)的方式,第二個是錯誤的,因為位置參數(shù)在前,默認(rèn)參數(shù)在后

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

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

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

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

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

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

      舉一個簡單示例

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

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

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

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

      *args 的用法

      args 是用來傳遞一個非鍵值對的可變數(shù)量的參數(shù)列表給函數(shù)

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

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

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

      理解* * kwargs

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

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

      python-函數(shù)可變參數(shù)類型

      python中的函數(shù),大多需要配置參數(shù),以下是幾種函數(shù)的參數(shù)類型:

      1.必備參數(shù):以正確的順序、個數(shù)傳入函數(shù)。調(diào)用時的參數(shù)情況要和聲明時一樣。最常用的情況。

      def tplink(a,b):

      c=a+b+b

      return c?

      tplink(4,2)

      2.關(guān)鍵字參數(shù):使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時參數(shù)的順序和聲明時不一致,因為python解析器會在調(diào)用函數(shù)時,用參數(shù)名匹配參數(shù)值。

      def tplink(age1,age2):

      ageall=age1+age2+age2

      return ageall

      tplink(age2=4,age1=2)

      3.默認(rèn)參數(shù):默認(rèn)某個參數(shù)的取值

      def tplink(age1,age2=5):

      ageall=age1+age2+age2

      return ageall

      tplink(age1=4)

      4.不定長參數(shù):在聲明時并不確定 調(diào)用時的參數(shù)數(shù)量。這種情況,可以用不定長參數(shù)進(jìn)行解決,具體操作是在參數(shù)名前用*。

      但不能和 關(guān)鍵字參數(shù)并用。一般在正常參數(shù)arg之后。

      *args、**kwargs的定義:

      這兩個都是python中的不定長參數(shù),又稱為可變參數(shù)。

      *args 表示任何多個無名參數(shù),它是一個 tuple ;

      **kwargs 表示關(guān)鍵字參數(shù),它是一個dict。

      同時使用 * args和 ** kwargs 時,必須 * args參數(shù)列要在 ** kwargs前。且都在arg之后。

      函數(shù)在調(diào)用時,會根據(jù)順序,看是否放進(jìn) *args 或者 **kwargs中。

      具體可根據(jù)實際情況使用,可以 更方便靈活的接收信息。

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

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

      必選參數(shù)(Required arguments)是必須輸入的參數(shù),比如下面的代碼,必須輸入2個參數(shù),否則就會報錯:

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

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

      可選參數(shù)(Optional arguments)可以不用傳入函數(shù),有一個默認(rèn)值,如果沒有傳入會使用默認(rèn)值,不會報錯。

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

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

      輸出:

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

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

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

      來看下面的例子:

      python3.8運(yùn)行:

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

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

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

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

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

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

      結(jié)果:

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

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

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

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

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

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

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

      先來看個例子:

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

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

      接著看下面的例子:

      結(jié)果:

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

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

      結(jié)果:

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

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

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

      可以使用下面的方式:

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

      本文主要介紹了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ù)傳遞屬于對象的 引用傳遞 ,在對可變數(shù)據(jù)類型進(jìn)行參數(shù)傳遞時需要特別注意,如有必要,使用python的拷貝方法。

      參考文檔:

      --THE END--


      新聞名稱:python中函數(shù)類型 python函數(shù)
      標(biāo)題來源:http://ef60e0e.cn/article/docsphp.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        桓台县| 沈丘县| 始兴县| 温泉县| 六安市| 石城县| 睢宁县| 德庆县| 晋州市| 铅山县| 西贡区| 临洮县| 海晏县| 大余县| 武川县| 濮阳市| 岳西县| 黄龙县| 米易县| 沙坪坝区| 宁国市| 布尔津县| 历史| 嘉祥县| 通州市| 都江堰市| 肥西县| 泸西县| 岳西县| 资源县| 瑞金市| 清涧县| 广东省| 集贤县| 彰化县| 永平县| 安顺市| 阿克陶县| 镇江市| 霍林郭勒市| 遂昌县|