代码如下,要如何修改才能让每次循环结果不同
#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 调用就行了 |