亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

初學(xué)python,調(diào)用固定參,不固定參函數(shù)遇到的問題(持續(xù)更新)

bingo / 740人閱讀

摘要:即,雙星號參數(shù)接收的參數(shù)作為字典。在有些情況下,單星號函數(shù)參數(shù)和雙星號函數(shù)參數(shù)是一起使用的,定義如下總結(jié)默認值函數(shù)參數(shù)。雙星號函數(shù)參數(shù)。

函數(shù)調(diào)用時的參數(shù)傳遞方式:(調(diào)用函數(shù)) 傳遞方式有以下四種: 位置傳參 序列傳參 關(guān)鍵字傳參 字典關(guān)鍵字傳參
---------------------------------------------------yu---

(1)位置傳參:
實際參數(shù)(實參)的對應(yīng)關(guān)系與形式參數(shù)(形參)對應(yīng)關(guān)系是按位置依次對應(yīng)的
實參的個數(shù)和形參的個數(shù)要嚴格一直
實例:

def myfun1(a, b, c):   # 形參
            print(a)
            print(b)
            print(c)
      # 調(diào)用
      myfun1(1, 2, 3)   # 實參

(2)序列傳參
序列傳參是指在函數(shù)調(diào)用過程中,用*將序列拆解后按位置進行傳遞的方式
序列傳參時,序列拆解的位置將與形參一一對應(yīng)
序列的位置信息對應(yīng)相應(yīng)的參數(shù)
實例:

# 假設(shè)已經(jīng)有序列可用
      L1 = [11,22,33]
      T1 = (4.4,5.5,6.6)
      S1 = "ABC"
      myfun1(*L1)
      myfun1(*T1)
      myfun1(*S1)

(3)關(guān)鍵字傳參:
關(guān)鍵字傳參是指傳參時,按形參的名稱給形參賦值
實參和形參按形參名進行匹配(可以不按位置順序進行匹配)
實例:

# 關(guān)鍵字傳參
      myfun1(c = 33, b = 22, a = 11)

(4)字典關(guān)鍵字傳參:
是指實參為字典,將字典用**拆解后進行關(guān)鍵字傳參
實例:

d1 = {"c":33, "b":22, "a":11}
      myfun1(**d1)

說明:字典的鍵名和形參名必須一
字典的鍵名必須為字符串,并符合關(guān)鍵字的命名
字典的鍵名要在形參中存在

(5)函數(shù)的綜合
傳參方式,在能確定每個形參否能唯一匹配一個實參的情況也可以任意傳參
傳參時,位置傳參和序列傳參要先于關(guān)鍵字傳參和字典關(guān)鍵子傳參
實例: myfun1(100, *[200, 300])

         myfun1(*[10,20],30)
         myfun1(*[10], 20, *[30])
         myfun1(100, **{"c":300, "b":200})
         myfun1(**{"c":300, "b":200}, a = 100)
         myfun1(b = 200, c = 300, 100)   # 錯的

注意傳參時:
1、不可變類型的數(shù)據(jù)作為函數(shù)參數(shù)傳入時,函數(shù)內(nèi)部不會改變變量的原數(shù)據(jù)的值
2、可變類型的數(shù)據(jù)作為函數(shù)參數(shù)傳遞時,函數(shù)內(nèi)部可以改變原數(shù)據(jù),多用與返回更多函數(shù)執(zhí)行結(jié)果
實例:寫一個函數(shù),在函數(shù)內(nèi)輸入一些整數(shù),

  (1)把所有奇數(shù)放入全局列表odds中
  (2)把所有的偶數(shù)放入全局的列表evens中
odds = []
evens = []
def input_number(o, e):
    while True:
        n = int(input("請輸入整數(shù):"))
        if n < 0:
            break
        # 如果n為奇數(shù)則添加列表odds中
        if n % 2 == 1:
            o.append(n)
        else: # 如果n為偶數(shù)則添加到列表evens中
            e.append(n)
input_number(odds, evens)
print(odds)   # 此列表將被修改
print(evens)    # 此列表也將被修改

2、函數(shù)參數(shù)的定義規(guī)則(創(chuàng)建函數(shù))
函數(shù)的缺省參數(shù):
語法:def 函數(shù)名(形參名1 = 默認實參1, 形參名2 = 默認實參2, ....):

語句塊

實例:以下示意函數(shù)的缺省參數(shù)
def info(name, age=1, address="未填寫"):

print(name, "住在:", address, "今年:", age, "歲")

info("莊AC", 23, "北京")
info("莊AC", 23)
說明:(1)缺省參數(shù)必須自右至左依次存在,如果一個參數(shù)有缺省參數(shù),則其右側(cè)的所有參數(shù)都必須有缺省參數(shù)

            如:def test_fn(a, b = 10, c):    # 是錯的
     (2)缺省參數(shù)可以有0個或多個,甚至全部都有缺省參數(shù)

3、函數(shù)的參數(shù)定義方式:

 位置形參
 星號元組形參
 命名關(guān)鍵字形參
 雙星號字典形參

(1)位置形參語法:
def 函數(shù)名(形參名1, 形參名2, 形參名3,......):

語句塊

(2)星號元組形參語法:
def 函數(shù)名(*元組形參名):

語句塊

作用:收集多余的位置傳參
實例:

def funs(*args):
       # args綁定一個元組,此元組內(nèi)的元素是為了剩余的位置傳參
       print("施參個數(shù)是:", len(args))
       print("args綁定", args)
   funs()  # 以無參調(diào)用
   funs(1, 2, 3, 4)
   funs("ABC", 1, 2.3, 4+5J)

(3)命名關(guān)鍵字形參語法:
def 函數(shù)名(*, 命名關(guān)鍵字形參):
語句塊

def 函數(shù)名(*args, 命名關(guān)鍵字形參):
語句塊
作用:所有的命名關(guān)鍵字形參,必須用關(guān)鍵字傳參或字典關(guān)鍵字傳參進行參數(shù)傳遞
實例:

 def fn(*, a, b):
       print("a的值為:", a)
       print("b的值為:", b)
   # fn(1, 2)  # 錯的,a和b 必須是用關(guān)鍵字傳參
   fn(a = 1, b = 2)  #必須這么傳
   fn(b = 0, a = 20)
   fn(**{"b":200, "a":100})

 def f2(*args, a, b):
       print("args=", args)
       print("a=", a)
       print("b=", b)
   f2(1, 2, 3, 4, a=100, b=200)
   f2(a=100, b=200)

(4)雙星號字典形參語法:
def 函數(shù)名(**字典形參名):
語句塊

作用:收集多余的關(guān)鍵字傳參(例如:dict()),通常只有一個
實例:

   def func(**kwagrs):  # kwagrs綁定一個字典
       print("參數(shù)個數(shù):", len(kwagrs))
       print("kwagrs的值為:", kwagrs)
   func(name="zhuang", age=35, address="dgas")
   func()

(5)函數(shù)參數(shù)自左至右的順序為:
位置形參, 星號元組形參, 命名關(guān)鍵字形參, 雙星號字典形參
實例:

def fn(a, b, *args, c, **kwargs):
      pass
fn(100,200,300,400,c=5.5,d=6.6,e=7.7)
fn(10,*"AB",20,*{"a":100, "b":200, "c":300})

# ----------以下函數(shù)可以接受任意的位置傳參和關(guān)鍵字傳參------------
def fn(args, *kwargs):





額外部分一:

python函數(shù)參數(shù)支持帶星號*的非固定個數(shù)參數(shù),如:

def getInfos(msg,*users):
    for u in users:
        print(u)

在調(diào)用時,可以往users傳入一個元組或列表,如果傳入的列表或元組前帶星號,剛傳入后會自動拆包。具體的不同用法有不同的效果,如下:

1、不定形參傳入元組。

getInfos("msg",("aa","bb") )

輸出:

("aa", "bb")

2、不定形參傳入帶星元組。

getInfos("msg",*("aa","bb") )

輸出:

aa
bb

3、不定形參傳入列表。

getInfos("msg",["aa","bb"] )

輸出:

["aa", "bb"]


光看結(jié)果可能像是列表!?。。。。。。。。。。?!但其實返回的就是一個元組
可通過以下代碼進行驗證:

#!/usr/bin/python3
def getInfos(msg,*users):
    users[0]="hh"
    for u in users:
        print(u)
a = ["aa","bb"]
getInfos("msg",a )

結(jié)果:

Traceback (most recent call last):
  File "/tmp/653879115/main.py", line 7, in 
    getInfos("msg",a )
  File "/tmp/653879115/main.py", line 3, in getInfos
    users[0]="hh"
TypeError: "tuple" object does not support item assignment

exit status 1


這表明是一個元組。

4、不定形參傳入帶星列表。

getInfos("msg",*["aa","bb"] )

輸出 :

aa
bb

5、直接傳入多個值。

getInfos("msg", "aa","bb")

輸出:

 aa
額外部分二:

看如下例子:

def singalStar(common, *rest):
    print("Common args: ", common)
    print("Rest args: ", rest) 

第一種方式,星號(*)參數(shù)不傳參:

 singalStar("hello")
     
    #Common args:  hello
    #Rest args:  ()

第二種方式,傳多個值(個數(shù)大于或等于函數(shù)定義時的參數(shù)個數(shù)):

  singalStar("hello", "world", 000)
     
    #Common args:  hello
    #Rest args:  ("world", 0)

不難看出,上述方式中,星號參數(shù)把接收的參數(shù)合并為一個元組。

第三種方式,竟然星號參數(shù)把接收的參數(shù)作為元組,那么我們直接傳元組類型的值:

 singalStar("hello", ("world", 000))
     
    #Common args:  hello
    #Rest args:  (("world", 0),)

沒錯,你沒看錯,傳遞的元組值作為了星號參數(shù)的元組中的一個元素。

第四種方式,但是有時候我們想把元組值就作為星號參數(shù)的參數(shù)值,那么該怎么辦呢?好辦,在元組值前加上“”即可,不過此時,就不能在加了“”的元組后,追加任何值了。

singalStar("hello", *("world", 000))

singalStar("hello", *("world", 000), "123") #error Common args: hello Rest args: ("world", 0)

3.帶兩個星號(*)的函數(shù)參數(shù)

帶兩個星號(*)的函數(shù)定義如下:

   def doubleStar(common, **double):
        print("Common args: ", common)
        print("Double args: ", double)

第一種方式,星號(*)參數(shù)不傳值:

doubleStar("hello")

Common args: hello Double args: {}

第二種方式,傳多個參數(shù)(個數(shù)大于或等于函數(shù)定義時的參數(shù)個數(shù))。但是,這和單星號參數(shù)傳值方式肯定不一樣,否則,不就亂套了嗎。

doubleStar("hello", "Test", 24) #error
doubleStar("hello", x = "Test", y = 24)

Common args: hello Double args: {"y": 24, "x": "Test"}

不難發(fā)現(xiàn),此時必須采用第一節(jié)的默認值傳參的“args = value”的方式。同時,“=”前的字段成了字典的鍵,“=”后的字段成了字典的值。即,雙星號參數(shù)接收的參數(shù)作為字典。

第三種方式,有時候我們想把字典值就作為星號參數(shù)的參數(shù)值,那么該怎么辦呢?同單星號參數(shù),在字典值前加上“**”,同時其后不能添加任何值。

#doubleStar("hello", **{"name": "Test", "age": 24}, {"name": "Test2", "age": 24})    #error
#doubleStar("hello", {"name": "Test", "age": 24})    #error
doubleStar("hello", **{"name": "Test", "age": 24})
 
#Common args:  hello
#Double args:  {"name": "Test", "age": 24}

在有些情況下,單星號函數(shù)參數(shù)和雙星號函數(shù)參數(shù)是一起使用的,定義如下:

 def singalAndDoubleStar(common, *single, **double):
        print("Common args: ", common)
        print("Single args: ", single)
        print("Double args: ", double)



4.總結(jié)

默認值函數(shù)參數(shù)。這種函數(shù)定義時,第一個有默認值的參數(shù)后的每一個參數(shù)都必須提供默認值。傳參時,可以直接傳參,也可以以“默認值參數(shù)名=value”的形式傳參。
單星號函數(shù)參數(shù)。單星號函數(shù)參數(shù)接收的參數(shù)組成一個元組。
雙星號函數(shù)參數(shù)。雙星號函數(shù)參數(shù)接收的參數(shù)組成一個字典。

完整的代碼如下:

def singalStar(common, *rest):
    print("Common args: ", common)
    print("Rest args: ", rest)
    
def doubleStar(common, **double):
    print("Common args: ", common)
    print("Double args: ", double)
    
def singalAndDoubleStar(common, *single, **double):
    print("Common args: ", common)
    print("Single args: ", single)
    print("Double args: ", double)
 
def defaultValueArgs(common, defaultStr = "default", defaultNum = 0):
    print("Common args", common)
    print("Default String", defaultStr)
    print("Default Number", defaultNum)   
 
if __name__ == "__main__":
    defaultValueArgs("Test")
    defaultValueArgs("Test", "default", defaultNum = 1)
     
    singalStar("hello")
    singalStar("hello", "world", 000)
    singalStar("hello", ("world", 000))
    singalStar("hello", ("world", 000), {123: 123})
    singalStar("hello", *("world", 000))
#     singalStar("hello", *("world", 000), "123")    #error
    
    doubleStar("hello")
    doubleStar("hello", x = "Test", y = 24)
    doubleStar("hello", **{"name": "Test", "age": 24})
#     doubleStar("hello", {"name": "Test", "age": 24})    #error
 
    singalAndDoubleStar("hello")
    singalAndDoubleStar("hello", "world", 000)
    singalAndDoubleStar("hello", "world", 000, {"name": "Test", "age": 24})
    singalAndDoubleStar("hello", "world", 000, **{"name": "Test", "age": 24})
    singalAndDoubleStar("hello", ("world", 000), {"name": "Test", "age": 24})
#     singalAndDoubleStar("hello", *("world", 000), {"name": "Test", "age": 24})      #error
    singalAndDoubleStar("hello", *("world", 000), **{"name": "Test", "age": 24})









文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/45069.html

相關(guān)文章

  • Python標(biāo)準(zhǔn)庫---4、內(nèi)置函數(shù)(L-M-N-O)

    摘要:上一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù)下一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù)內(nèi)置函數(shù)返回對象的長度元素個數(shù)。對表示單個字符的字符串,返回代表它碼點的整數(shù)。上一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù)下一篇文章標(biāo)準(zhǔn)庫內(nèi)置函數(shù) 上一篇文章:Python標(biāo)準(zhǔn)庫---3、內(nèi)置函數(shù)(G-H-I-J-K)下一篇文章:Python標(biāo)準(zhǔn)庫---5、內(nèi)置函數(shù)(P-K-R) 內(nèi)置函數(shù): showImg(https://segmentfault.com...

    MartinHan 評論0 收藏0
  • python基礎(chǔ)教程:內(nèi)置函數(shù)(二)

    摘要:繼續(xù)講述更多的的內(nèi)置函數(shù)。傳遞以切換緩沖關(guān)閉僅允許在二進制模式下,選擇行緩沖僅在文本模式下可用,并且的整數(shù)以指示固定大小的塊緩沖區(qū)的大小以字節(jié)為單位。啟動內(nèi)置的幫助系統(tǒng)此函數(shù)主要在交互式中使用。 繼續(xù)講述更多的Python的內(nèi)置函數(shù)。 showImg(https://segmentfault.com/img/remote/1460000019193976); IO操作 input([p...

    xiaodao 評論0 收藏0
  • 拼多多搜索數(shù)anti_content怎么破

    摘要:這里就可以看到我們需要找的參數(shù)了,但是這里已經(jīng)生成了,我們可以直接查看右邊的調(diào)用棧經(jīng)過多次查看,可以很容易就發(fā)現(xiàn)這個地方有點東西,立即下斷點這時我們可以先去掉斷點,然后刷看查看,獲取不斷點下一個斷點直到運行結(jié)束再滑動到下一頁即可。 今天繼續(xù)帶來破解拼多多的 anti_content 參數(shù)破解,代碼已經(jīng)放在github上:https://github.com/SergioJune...(...

    tulayang 評論0 收藏0
  • 拼多多搜索數(shù)anti_content怎么破

    摘要:這里就可以看到我們需要找的參數(shù)了,但是這里已經(jīng)生成了,我們可以直接查看右邊的調(diào)用棧經(jīng)過多次查看,可以很容易就發(fā)現(xiàn)這個地方有點東西,立即下斷點這時我們可以先去掉斷點,然后刷看查看,獲取不斷點下一個斷點直到運行結(jié)束再滑動到下一頁即可。 今天繼續(xù)帶來破解拼多多的 anti_content 參數(shù)破解,代碼已經(jīng)放在github上:https://github.com/SergioJune...(...

    everfight 評論0 收藏0
  • 函數(shù)式編程與面向?qū)ο缶幊蘙1]: Lambda表達式 函數(shù)柯里化 高階函數(shù)

    摘要:函數(shù)式編程與面向?qū)ο缶幊瘫磉_式函數(shù)柯里化高階函數(shù)之劍什么是表達式例子定義表達式是一個匿名函數(shù),表達式基于數(shù)學(xué)中的演算得名,直接對應(yīng)于其中的抽象,是一個匿名函數(shù),即沒有函數(shù)名的函數(shù)。 函數(shù)式編程與面向?qū)ο缶幊蘙1]: Lambda表達式 函數(shù)柯里化 高階函數(shù).md 之劍 2016.5.2 11:19:09 什么是lambda表達式 例子 For example, in Lisp the...

    張金寶 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<