不能 return 函数外的变量

can't return a variable outside the function

我正在尝试 return 函数的输出并尝试在 for 循环中执行函数调用并在同一循环中打印输出。但它不起作用:

pagination_urls = ["http://google.com"]

def oss(url):
    data = url
    return data


for url in pagination_urls:
    oss(url)
    spider = data
    print spider

输出:

Traceback (most recent call last):
  File "mongo.py", line 10, in <module>
    spider = data
NameError: name 'data' is not defined

如何使这个程序运行?

您需要使用返回值

for url in pagination_urls:
    spider = oss(url)
    print spider

这将从 oss 函数获取返回值 data,并将其分配给您的 spider 变量

您没有将 oss() 的输出分配给任何变量。试试这个:

pagination_urls = ["http://google.com"]

def oss(url):
    data = url
    return data


for url in pagination_urls:
    data = oss(url)
    spider = data
    print spider

一个函数中的局部变量不会神奇地出现在该函数之外。 return returns value,不是变量名。相反,显式分配 return 值:

for url in pagination_urls:
    spider = oss(url)
    print spider

这里 oss() 的 return 值(return 语句在 oss 中生成的任何对象)被分配给 spider 变量。