将参数传递给Python函数

时间:2015-07-04 19:31:02

标签: python function beautifulsoup

我有一个接受Beautiful Soup对象soup的函数。

我还想传递一个变量,告诉它如何处理soup。现在功能是:

def get_info(soup):
    info = soup.findAll('div',{'id':'hideinse'})[0]('a',href=True)
    #do stuff

但我想要做的是传递这一行findAll('div',{'id':'hideinse'})[0]('a',href=True)而不是一串字符串。我希望它不要永远是findAll等等,所以我想尝试做但不确定是怎么做的:

def get_ifno(soup, parse_line):
     info = soup.parse_line
     #do stuff

那我该如何传递呢?

2 个答案:

答案 0 :(得分:2)

鉴于你想要的复杂性你应该采取一个函数,调用者可以提供:

def get_info(soup, parse_line):
    info = parse_line(soup)

get_info(soup, lambda x: x.findAll('div',{'id':'hideinse'})[0]('a',href=True))

答案 1 :(得分:1)

通过传递lambdas,你可以获得最大的灵活性和最少的头痛:

def get_info(callback):
    info = callback()

get_info(lambda: soup.findAll('div',{'id':'hideinse'})[0]('a',href=True))