如何解決Python定義函式時傳參遇到的問題?

時間 2021-06-02 01:54:03

1樓:只增笑耳Jason

直觀點的做法可以這麼來。

deftest

(html,a

,**kwargs

):soup

=BeautifulSoup

(html,a

,kwargs

)呼叫:d=

test

(html,a

,d)我算是明白題主想要什麼了,現在深夜,手機打字不方便,我明天白天幫你改改你的test

2樓:resolvewang

soup = BeautifulSoup(html, a, from_encoding=b)

這個語句來說,html就是位置引數,它不傳的話,就會報錯。這裡"a"如果是"parser"字段的話,他就是預設引數,也就是說如果你不傳,它就預設使用"html.parser",如果你傳了,它就會使用你傳遞的字段;from_encoding是乙個關鍵字引數,就是說你在函式中傳遞的時候,必須使用key=value來傳遞它。

還有乙個就是可變引數,可變引數一般都是傳遞的乙個列表,比如

defsum(*

args):i

=0forj

inargs:i

+=jreturn

ilist_one=[

1,2,

3]print

(sum

(list_one

))這個就是可變引數的用法。

針對題主說的

函式b位置的那個引數不是必須的

我想預設引數就可以滿足你的需求,當然你如果用可變引數或者關鍵字引數,也是可以滿足你的需求的,比如用關鍵字引數

def test(html, a, **kwargsb = kwargs.get('key', 'value'soup = Beautifulsoup(html, a, breturn soup

此外,還有一點需要注意,就是不同類引數的位置順序。

如果題主想系統一點了解python的函式傳參相關知識的話,推薦閱讀這篇文章函式的引數

3樓:luwen chen

因為你傳的'from_encoding="gb18030"'是乙個字串

def test(html, a, b):

soup = BeautifulSoup(html, a, from_encoding=b)

return soup

soup = test(html, "html.parser", "gb18030")

這個python問題如何解決

盜藍 只返回第乙個最長的數字字串 import re string 983fh398fh29q83u9283f9299h3 int list re findall r d string int list 983 398 29 83 9283 9299 3 result max int list ke...

Python定義乙個函式時,怎麼確定需要幾個引數 ?

推薦乙個寫法 deffname kwargs 標明處理過程和返回結果 arg1 kwargs get arg1 arg2 kwargs get arg2 滿足 1.引數的可擴充套件 2.函式處理只獲取需要的引數即可 3.pycharm 呼叫函式時會根據arg.提示引數名稱 酒罈壇兒 看實現函式的功能...

小白學習python遇到瓶頸如何解決?

如果以後不打算從事遊戲方向的,可以跳過pygame,直接去下一步 如果以後打算玩玩遊戲的,還是硬著頭皮往下看吧,或者換個同類的demo去看 我個人建議你,先把這個飛機大戰的小遊戲,乙個字乙個字的,自己碼一遍,不求馬上看懂。在碼字和除錯的過程中,會慢慢明白的 joy 關鍵還是要帶著問題,學以致用!這樣...