Python函数中循环仅返回首个值,如何获取1-99的完整循环结果?
你的问题出在get_id函数里的return i写在了for循环内部——第一次循环到i=1时就触发了return,函数直接终止,自然只返回1。要返回1到99的所有值,有两种常用的修改方式:
方式1:用生成器(yield)逐个返回值
把return换成yield,让函数变成生成器,这样每次迭代都会生成一个值,不会直接终止函数。调用的时候遍历生成器,把每个值传给get_id_mysql:
def get_id(): for i in range(1, 100): yield i def get_id_mysql(x): print(x) # 遍历生成器的每个元素,逐个传递 for variable in get_id(): get_id_mysql(variable)
方式2:返回完整列表
如果需要一次性拿到所有值,可以先把1-99存入列表,循环结束后再return整个列表,之后遍历列表传递每个元素:
def get_id(): id_list = [] for i in range(1, 100): id_list.append(i) return id_list def get_id_mysql(x): print(x) variable_list = get_id() for variable in variable_list: get_id_mysql(variable)
两种方式的区别:生成器是惰性求值,每次只生成一个值,适合处理大数据量;返回列表会一次性把所有值存入内存,小数据量用起来更直接。
内容的提问来源于stack exchange,提问作者CaptainPy
相关产品推荐
相关产品推荐

