Python中多次从外部文件调用变量的问题求助
解决方案:每次循环获取新的随机数
这是个很常见的Python模块导入机制问题,我来帮你搞定~
为啥会一直输出同一个随机数?
Python的模块导入是一次性执行的:当你第一次执行from rand_gen import A时,rand_gen.py里的代码会被完整运行一遍,A = np.random.randint(1, 100)也会执行并生成一个随机数。之后不管你再导入多少次这个模块,Python都不会重新运行模块里的代码,所以A的值就固定下来了。
解决办法
方法1:把随机数生成逻辑封装成函数(推荐)
这是最符合Python编程习惯的做法,把生成随机数的操作放到函数里,每次调用函数都会生成新的随机数。
修改rand_gen.py:
import numpy as np def generate_A(): return np.random.randint(1, 100)
然后在你的主脚本里调用这个函数:
count = 1 from rand_gen import generate_A while count <= 3: A = generate_A() print('Random number is ' + str(A)) count += 1
方法2:每次循环重新加载模块(不推荐,仅作了解)
如果你一定要保留A作为变量的形式,可以用importlib.reload强制重新加载模块,这样每次循环都会重新执行rand_gen.py里的代码,更新A的值。
主脚本代码:
import importlib import rand_gen count = 1 while count <= 3: # 重新加载模块,执行里面的代码更新A importlib.reload(rand_gen) print('Random number is ' + str(rand_gen.A)) count += 1
⚠️ 注意:这种方法效率很低,而且会重新执行模块里的所有代码,容易引发意外问题,所以一般不推荐使用。
内容的提问来源于stack exchange,提问作者Divyang Prajapati
相关产品推荐
相关产品推荐

