Return 来自一个函数的变量在另一个函数中使用 python
Return variables from one function to use in another with python
我不知道为什么这不起作用
from bs4 import *
import time
import pandas as pd
import pickle
import html5lib
from requests_html import HTMLSession
s = HTMLSession()
url = "https://cryptoli.st/lists/fixed-supply"
def get_data(url):
r = s.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
return soup
def get_next_page(soup):
page = soup.find('ul', {'class': 'pager'})
if not page.find('a', {'class': 'btn btn-default current disabled'}):
url = 'https://cryptoli.st/lists/fixed-supply' + \
str(page.find('li', {'class': 'paginate_button'}).find(
'a')[{'class': 'btn btn-default next'}])
return url
else:
return
get_data(url)
print(get_next_page(soup))
我看到其他脚本 return 从一个函数中使用变量以在另一个函数中使用,但这一直说“汤”未定义。然后,如果我将 soup 设为全局变量,则会收到错误消息,即页面是 Nonetype 并且我无法调用它的 .find 属性。任何帮助将不胜感激。
print(get_next_page(data))
的最后一行是 运行 传入参数 data
的函数 get_next_page
。但是,data
从未定义,并且所以它传入 None。那么在 get_next_page
内部,它分配 soup = None
。那么你是 运行 None
上的所有其他人。
在倒数第二行你需要做data = get_data(url)
,然后当你调用get_next_page(data))
时,数据将等于你返回的soup
第一个函数。
此外,您可能需要将 s = HTMLSession()
置于 get_url
函数内部,或者像 url
一样将其传入
这就是你正在做的。
def define_soup():
soup = 'yummy'
return soup
def eat():
return soup
define_soup()
print(eat())
soup
肯定是在 define_soup()
中定义的,但它是那个函数的局部变量。没有其他功能可以使用它。所以假设因为我们调用了 define_soup()
因此我们可以在 eat()
中使用它是错误的。相反,您可以使 soup
全局化或将 define_soup()
的返回值存储在变量中。
使用全局
def define_soup():
global soup
soup = 'yummy'
return soup
def eat():
return soup
define_soup()
print(eat())
在 var
中存储 define_soup() 输出
def define_soup():
soup = 'yummy'
return soup
def eat(soup):
return soup
sp = define_soup()
print(eat(sp))
get_data(url) 函数 returns 一个变量,但没有存储在任何东西中。所以你可以做
数据=get_data(url)
打印(get_next_page(数据))
我不知道为什么这不起作用
from bs4 import *
import time
import pandas as pd
import pickle
import html5lib
from requests_html import HTMLSession
s = HTMLSession()
url = "https://cryptoli.st/lists/fixed-supply"
def get_data(url):
r = s.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
return soup
def get_next_page(soup):
page = soup.find('ul', {'class': 'pager'})
if not page.find('a', {'class': 'btn btn-default current disabled'}):
url = 'https://cryptoli.st/lists/fixed-supply' + \
str(page.find('li', {'class': 'paginate_button'}).find(
'a')[{'class': 'btn btn-default next'}])
return url
else:
return
get_data(url)
print(get_next_page(soup))
我看到其他脚本 return 从一个函数中使用变量以在另一个函数中使用,但这一直说“汤”未定义。然后,如果我将 soup 设为全局变量,则会收到错误消息,即页面是 Nonetype 并且我无法调用它的 .find 属性。任何帮助将不胜感激。
print(get_next_page(data))
的最后一行是 运行 传入参数 data
的函数 get_next_page
。但是,data
从未定义,并且所以它传入 None。那么在 get_next_page
内部,它分配 soup = None
。那么你是 运行 None
上的所有其他人。
在倒数第二行你需要做data = get_data(url)
,然后当你调用get_next_page(data))
时,数据将等于你返回的soup
第一个函数。
此外,您可能需要将 s = HTMLSession()
置于 get_url
函数内部,或者像 url
这就是你正在做的。
def define_soup():
soup = 'yummy'
return soup
def eat():
return soup
define_soup()
print(eat())
soup
肯定是在 define_soup()
中定义的,但它是那个函数的局部变量。没有其他功能可以使用它。所以假设因为我们调用了 define_soup()
因此我们可以在 eat()
中使用它是错误的。相反,您可以使 soup
全局化或将 define_soup()
的返回值存储在变量中。
使用全局
def define_soup():
global soup
soup = 'yummy'
return soup
def eat():
return soup
define_soup()
print(eat())
在 var
中存储 define_soup() 输出def define_soup():
soup = 'yummy'
return soup
def eat(soup):
return soup
sp = define_soup()
print(eat(sp))
get_data(url) 函数 returns 一个变量,但没有存储在任何东西中。所以你可以做
数据=get_data(url) 打印(get_next_page(数据))