我已经使用两个函数在python中编写了一个脚本。第一个功能应该是从网页上获取一些链接,而另一个功能应该在控制台中将其打印出来。
我的问题是,当我使用return
之类的return get_info(elem)
关键字将结果从一个函数传递到另一个函数时,会有什么不同?通常只执行此get_info(elem)
,我可以将东西从一个函数传递到另一个函数,然后何时选择此return get_info(elem)
,为什么?
一个例子可能是:
import requests
from bs4 import BeautifulSoup
def get_links(url):
response = requests.get(url)
soup = BeautifulSoup(response.text,"lxml")
elem = soup.select_one(".info h2 a[data-analytics]").get("href")
get_info(elem) #why this one
return get_info(elem) #or why this
def get_info(link):
print(link)
答案 0 :(得分:1)
return get_info(elem)
将调用get_info()
函数,然后获取返回的任何内容,并从get_links()
返回相同的值。大致相当于:
temp = get_info(elem)
return temp
但是由于get_info()
不返回任何内容,它仅打印链接,因此在return
语句中使用链接没有多大意义。只是写
get_info(elem)
调用函数时不对其返回值进行任何操作(如果返回了任何内容)。
答案 1 :(得分:1)
让我们首先简化您的功能,以便您可以运行它并比较结果:
def get_links(url):
url = "this returns link: {}".format(url)
get_info(url) #why this one
return get_info(url) #or why this
def get_info(link):
print(link)
get_links('google.com')
>>this returns link: google.com
>>this returns link: google.com
您的函数现在两次返回print
。第一次是在调用函数时,第二次是在返回函数时,在这种情况下实际上是返回None
,因为get_info
不返回任何内容。
这在这里很明显:
url = get_links('google.com')
>>this returns link: google.com
>>this returns link: google.com
url
>> *nothing happens*
如果实际执行某项操作,则返回的结果会更加明显,例如:
def get_links(url):
url = "this returns link: {}".format(url)
return get_info(url)
def get_info(link):
return "get_info does something, {}".format(link)
url = get_links('google.com')
url
>>'get_info does something, this returns link: google.com'
如果不使用return,则仅表示该函数将不返回任何内容,例如,如果您只想像以前那样print
返回结果,则会发生这种情况。您可以通过像上面一样为函数分配名称来进一步尝试此方法,该函数没有返回值,并且结果基本上是None
。