代码如下,要如何修改才能让每次循环结果不同
#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)}
}]
1
morefreeze 2017-11-03 14:26:20 +08:00
那是因为 api_102 在 import interface_data_random 已经被确定了,你的 data_module 也就确定了,总之,data_module 就是**一个**确定的值,和你循环几次没有关系
可以把 api_102 包到一个函数里,并且每次循环调用这个函数 |
2
takanasi 2017-11-03 14:40:57 +08:00
你这个代码 for 根本运行不了,而且 //是什么鬼
|
3
vipfts 2017-11-03 15:21:16 +08:00
import 机制问题吧 在 import 的时候 params 的值已经 random 出来了
大概用闭包 pickle 一下?? 我是不会 |
4
zwgmlr3 2017-11-03 15:33:09 +08:00
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 里单行注释用 # |
5
testVmap OP for i in range(5):#经过指点改了一下,这样就可以了
data_module=[ interface_data_random.api_102, ] run(url,data_module) 感谢大家建议,封装成函数也不行,最后将定义放在了循环里 //是手贱随便打的,尴尬啊 |
6
hcnhcn012 2017-11-03 17:29:06 +08:00 via iPhone
放在一个包,不然在 import 的时候就已经 random 好了,在后面调用的时候当然只有重复引用了啊,如果一定要放两个包,你把 interface_data_random.api_02 封装成一个函数然后在另个文件里 for 调用就行了
|