英文:
Get all values of local variable value outside of function
问题
I need to print the value of prod ouside of this function and loop.
This variable prod has multiple values but I am getting only the last value when I print this outside of function even after marking it as global.
soup = BeautifulSoup(filehandle, "html.parser")
soup = soup.find('ul', class_='listing')
thdr = soup.find('div', class_='heading')
if (chk == "n"):
while (thdr != None):
for thdr in thdr:
global prod
temp = thdr.string
prod = thdr.string
print prod
我需要在这个函数和循环之外打印prod的值。
这个变量prod有多个值,但是即使将它标记为全局变量,在函数之外打印时,我只得到最后一个值。
英文:
soup = BeautifulSoup(filehandle, "html.parser")
soup = soup.find('ul', class_='listing')
thdr = soup.find('div', class_='heading')
if (chk == "n"):
while (thdr != None):
for thdr in thdr:
global prod
temp = thdr.string
prod = thdr.string
print prod
I need to print the value of prod ouside of this function and loop.
This variable prod has multiple values but I am getting only the last value when I print this outside of function even after marking it as global.
答案1
得分: 0
你可以在顶部声明一个数组,并在每次迭代中附加项目。然后,一次打印所有值。
soup = BeautifulSoup(filehandle, "html.parser")
uls = soup.find('ul', class_='listing')
thdr = soup.find('div', class_='heading')
prod_items = []
if (chk == "n"):
for item in thdr:
prod = item.string
prod_items.append(prod)
print(prod_items)
英文:
You can declare an array on top and append items to it in each iteration. And then, print it once with all the values.
soup = BeautifulSoup(filehandle, "html.parser")
uls = soup.find('ul', class_='listing')
thdr = soup.find('div', class_='heading')
prod_items = []
if (chk == "n"):
for item in thdr:
prod = item.string
prod_items.append(prod)
print(prod_items)
答案2
得分: 0
你可以在你的 if
语句下创建一个 prod
列表(正如其他人所说),然后在 for
循环下不断追加它,最后在循环结束后添加一个 print
语句,以打印出整个 prod
列表
你不需要使用 global
关键字
这就是我想要表达的:
soup = BeautifulSoup(filehandle, "html.parser")
soup = soup.find('ul', class_='listing')
thdrs = soup.find_all('div', class_='heading')
if chk == "n":
prods = []
for thdr in thdrs:
prod = thdr.string
prods.append(prod)
print(prod)
print(prods)
英文:
you can make a list(as others are saying) of prod
under your if
statement then keep appending it under the for
loop and finally you can simply add a print
statement after the loop is ended to print out the whole list of prod
you don't need to use global
keyword
This is what I'm trying to say:
soup = BeautifulSoup(filehandle, "html.parser")
soup = soup.find('ul', class_='listing')
thdrs = soup.find_all('div', class_='heading')
if chk == "n":
prods = []
for thdr in thdrs:
prod = thdr.string
prods.append(prod)
print(prod)
print(prods)
答案3
得分: 0
I'm not quite sure what the code in your question is doing, so I'll use the sample code below to answer your question.
Solution
Using the yield
keyword. It is used to create a generator function. A type of function that is memory efficient and can be used like an iterator object.
Sample Code
def foo(num):
while num < 10:
num += 1
yield num
for n in foo(0):
print(n)
Output
1
2
3
4
5
6
7
8
9
10
英文:
I'm not quite sure what the code in your question is doing, so I'll use the sample code below to answer your question.
Solution
Using yield
keyword. It is used to create a generator function. A type of function that is memory efficient and can be used like an iterator object.
Sample Code
def foo(num):
while num < 10:
num += 1
yield num
for n in foo(0):
print(n)
Output
1
2
3
4
5
6
7
8
9
10
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论