从下面的代码中可以看到,不带参数地调用了mysearch。如何调用此函数?这个技术怎么称呼?该方法从何处获取参数(标签)?对不起,我在任何地方都找不到答案...
def myserach(tag):
return tag.has_attr('ResultsAd') # and tag['li']
with open('index.html', 'rb') as file:
soup = BeautifulSoup(file, "html.parser")
elements1 = soup.find_all('div', attrs={"class": "ResultsAd"})
elements1 = soup.find_all(myserach)
答案 0 :(得分:5)
您的代码段中未调用该函数。
也许这个例子可以帮助您更好地理解。
def foo(str):
print(str)
def bar(arg):
arg("now calling foo")
bar(foo)
答案 1 :(得分:1)
在elements1 = soup.find_all(my_search)
的这行中,您没有调用my_search
,而是将my_search
函数传递给soup.find_all
函数。
注意:您可以使用keyword arguments
来调用函数而无需传递其参数。喜欢:
def my_fun(value=5):
print(value)
您可以通过两种方式调用此函数:
my_fun(10) #here value will be 10
my_fun() #here value will be 5
答案 2 :(得分:1)
这不是在“调用一个函数”,而是将一个函数名(C terma中的一个函数Poiter)作为参数传递给另一个函数,该函数随后将使用适当数量的参数进行调用。
答案 3 :(得分:1)
实际上,您没有在调用该函数。不带参数的函数调用看起来像function()
。您不会给出find_all
调用的mysearch
结果,而是函数本身。然后可以在find_all
内部调用该函数。这些以其他函数为参数的函数称为高阶函数。这是一个高阶函数的示例:
def map(xs, f):
result = []
for x in xs:
result.append(f(x))
return result
所以想法是,函数只是一个值,调用的东西只是它们的方法(__call__
)。