![](/img/trans.png)
[英]How do I pass variables from one function to another and use them in conditional statements in python?
[英]I am unable to use pass variables from one function to another
我无法使用从一个 function 到另一个的传递变量。 我收到以下错误消息: ValueError: too many values to unpack (expected 3)
这是我的代码:
import requests
from bs4 import BeautifulSoup
from discord_webhook import DiscordWebhook, DiscordEmbed
def data():
s = requests.session()
s.headers.update({'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'})
url = ''
r = s.get(url)
soup = BeautifulSoup(r.text, 'lxml')
j = []
k = []
for i in soup.find("[class=class] a"):
m = i['id']
n = i['href']
j.append(m)
k.append(n)
return url, soup, j, k
def more_data():
soup = data()
t = soup.find(id="title").text
d = soup.find(id="description").text
return t, d
def main():
url, j, k = data()
t, d = more_data()
webhook = DiscordWebhook(url='')
embed = DiscordEmbed(title='{}'.format(t), url='{}'.format(url), description='{}'.format(d)
embed.add_embed_field(name='j', value='{}'.format(i) for i in j)
embed.add_embed_field(name='k', value='{}'.format(i) for i in k)
webhook.add_embed(embed)
webhook.execute()
if __name__ == "__main__":
main()
我也尝试过在main()
中调用其他函数,但这也不起作用。
只需对将不使用的变量使用下划线“_”,如在 Python 语言中,下划线的含义之一是忽略特定值。
def data():
...
return url, soup, j, k
url, _, j, k = data()
或者如果您有更多想要跳过的变量
def data():
...
return url, soup, soup2, soup3, j, k
url, *_, j, k = data()
关于您的改进问题:
import requests
from bs4 import BeautifulSoup
from discord_webhook import DiscordWebhook, DiscordEmbed
def get_page(url):
s = requests.session()
s.headers.update(
{
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'
}
)
try:
resp = s.get(url)
except:
return None
else:
return soup = BeautifulSoup(resp.text, 'lxml')
def data(soup):
look_for = '[class=class] a'
def populate(item):
return { 'id': item['id'], 'href': item['href'] }
return [ populate(i) for i in soup.find(look_for) ]
def more_data(soup):
title = soup.find(id="title").text
description = soup.find(id="description").text
return title, description
def main():
url = ''
soup = get_page(url)
if not soup:
return print('No page contents.')
links = data(soup)
title, description = more_data(soup)
webhook = DiscordWebhook(url='')
embed = DiscordEmbed(title=f'{ title }', url=f'{ url }', description=f'{ description }')
for link in links:
embed.add_embed_field(name='j', value=f'{ link['id'] }' )
embed.add_embed_field(name='k', value=f'{ link['href'] }' )
webhook.add_embed(embed)
webhook.execute()
if __name__ == "__main__":
main()
我不确定embed.add_embed_field
是否正确,因为它从未使用discord_webhook
模块并且没有机会对其进行测试...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.