怎样解决Python定义函数时传参遇到的问题

谢邀。我想你的问题本质上其实是对python传参数认识还不够清晰。在python中一共有五种类型的函数参数,包括位置参数、默认参数、可变参数、关键字参数和命令关键字参数。位置参数是必须传的,拿
soup = BeautifulSoup(html, a, from_encoding=b)这个语句来说,html就是位置参数,它不传的话,就会报错。这里"a"如果是"parser"字段的话,他就是默认参数,也就是说如果你不传,它就默认使用"html.parser",如果你传了,它就会使用你传递的字段;from_encoding是一个关键字参数,就是说你在函数中传递的时候,必须使用key=value来传递它。还有一个就是可变参数,可变参数一般都是传递的一个列表,比如
def sum(*args): i = 0 for j in args: i += j return ilist_one = print(sum(list_one))这个就是可变参数的用法。
针对题主说的
函数b位置的那个参数不是必须的我想默认参数就可以满足你的需求,当然你如果用可变参数或者关键字参数,也是可以满足你的需求的,比如用关键字参数
def test(html, a, **kwargs): b = kwargs.get(\u0026#39;key\u0026#39;, \u0026#39;value\u0026#39;) soup = Beautifulsoup(html, a, b) return soup此外,还有一点需要注意,就是不同类参数的位置顺序。
如果题主想系统一点了解python的函数传参相关知识的话,推荐阅读这篇文章函数的参数

■网友
b 所在的参数是一个 kwarg,你没写 key 当然不行了。
■网友
from_encoding="gb18030"

■网友
因为你传的 \u0026#39;from_encoding="gb18030"\u0026#39; 是一个字符串
def test(html, a, b): soup = BeautifulSoup(html, a, from_encoding=b) return soupsoup = test(html, "html.parser", "gb18030")
■网友
直观点的做法可以这么来。
def test(html, a, **kwargs): soup = BeautifulSoup(html, a, kwargs)调用:
d = { \u0026#39;from_encoding\u0026#39;: \u0026#39;gb18030\u0026#39;, \u0026#39;settings\u0026#39;: \u0026#39;mode1\u0026#39;}test(html, a, d) 【怎样解决Python定义函数时传参遇到的问题】 我算是明白题主想要什么了,现在深夜,手机打字不方便,我明天白天帮你改改你的test


    推荐阅读