作为参数传递给函数时的值会导致使用默认值吗?

时间:2017-06-22 18:50:40

标签: python python-2.7 function

我试图简化我的一些代码,并想知道哪些值作为参数传递给函数时会导致该参数默认为设置值(如def语句中所定义)。例如:

在我的一个课程中,我有以下功能

def scrape(self, search_term='animals'):

除了没有任何值之外的任何值都可以传递给scrape函数,该函数将导致函数使用它的默认值(动物)?

在我的主类的下面的函数中,我使用一个默认设置为None的变量调用该函数,我认为这会导致scrape使用animals但是它实际设置search_term=None

def list_channels(query=None):
    live_source = exploreorg.Site()
    links = live_source.scrape(query)

是否有一些值可以传递给scrape函数来启用此行为,还是我唯一的选择来执行if / else?

def list_channels(query=None):
    live_source = exploreorg.Site()
    if query is None:
        links = live_source.scrape()
    else:
        links = live_source.scrape(query)

我觉得这太笨重了,但如果这是最好的方式,那么我就可以了。我想有一种更好的方法可以完成我想要做的事情。

1 个答案:

答案 0 :(得分:1)

Python仅在没有传递值时使用默认值。为避免重复该值,您可以使用None作为默认值吗?

def scrape(self, search_term=None):
  search_term = search_term or 'animals'

def list_channels(query=None):
  live_source = exploreorg.Site()
  links = live_source.scrape(query)

或重用变量?

DEFAULT_SEARCH_TERM = 'animals'
def scrape(self, search_term=DEFAULT_SEARCH_TERM):
  ...

def list_channels(query=DEFAULT_SEARCH_TERM):
  live_source = exploreorg.Site()
  links = live_source.scrape(query)