Python 如何在循环内调用随机函数使结果随机
代码如下,要如何修改才能让每次循环结果不同
#interface.py
import interface_data_random
def run(url,data_module):
for index,item in enumerate(data_module):
print(item)
def main():
url=‘www.baidu.com’
data_module=[
interface_data_random.api_102,
]
for i in range(5)://使用循环每次随机结果相同,单独调用随机结果就不同
run(url,data_module)
if name == ‘main’:
main()
#interface_data_random.py
import random
api_102=["102",
{
"params": {"id": random.randint(1,1000)}
}]
Python 如何在循环内调用随机函数使结果随机
那是因为 api_102 在 import interface_data_random 已经被确定了,你的 data_module 也就确定了,总之,data_module 就是一个确定的值,和你循环几次没有关系
可以把 api_102 包到一个函数里,并且每次循环调用这个函数
你这个代码 for 根本运行不了,而且 //是什么鬼
import 机制问题吧 在 import 的时候 params 的值已经 random 出来了
大概用闭包 pickle 一下?? 我是不会
api_102 = lambda :[“102”,{“params”: {“id”: random.randint(1,1000)}}]
或
def api_102():
return [“102”,{“params”: {“id”: random.randint(1,1000)}}]
调用的时候加括号:interface_data_random.api_102()
最后:Python 里单行注释用 #
for i in range(5):#经过指点改了一下,这样就可以了
data_module=[
interface_data_random.api_102,
]
run(url,data_module)
感谢大家建议,封装成函数也不行,最后将定义放在了循环里
//是手贱随便打的,尴尬啊
放在一个包,不然在 import 的时候就已经 random 好了,在后面调用的时候当然只有重复引用了啊,如果一定要放两个包,你把 interface_data_random.api_02 封装成一个函数然后在另个文件里 for 调用就行了


