You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:43:00