【问题标题】:How to use variables from another file in python? [duplicate]如何在python中使用另一个文件中的变量? [复制]
【发布时间】:2020-06-26 00:26:17
【问题描述】:

我创建了两个文件。第一个称为 EA 包含变量和对函数的调用。第二个名为 EA_Functions 的文件包含 EA 中使用的所有函数。

这是EA

from EA_Functions import *

HIGHEST_NUMBER = 10
LOWEST_NUMBER = 1
SET_SIZE = 5
NUMBER_OF_PARENTS = 2
NUMBER_OF_CHILDREN = 2
MUTATION_STEP_SIZE = 0.5

warms = {}

# Create an initial random sets of warms
for i in range(SET_SIZE):
    warms[i] = np.random.randint(low=LOWEST_NUMBER, high=HIGHEST_NUMBER + 1, size=SET_SIZE, dtype=int)

# Order the set of warms based on the error
warms_sorted = sort(warms)

这是EA_Functions

import numpy as np
from random import randint


def calculate_error(lst):
    return (SET_SIZE - np.mean(lst)) ** 2


def sort(dictionary):
    return sorted(dictionary.items(), key=lambda item: calculate_error(item[1]))

我想使用第一个文件 EA 中包含的 SET_SIZE 变量。

如果在 EA_Functions 我尝试导入 EA

from EA import *

我在执行“主”代码时遇到错误,文件 EA

【问题讨论】:

  • 您需要将其设为函数参数。
  • 为什么需要在 EA 上拥有它?如果您不打算通过代码更改它的值,您可以将它放在 EA_Functions 上,代码就可以了
  • 你应该在问题中包含错误信息。
  • 一些变量也用在EA上
  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是屏幕截图)放在有问题的(不是评论)中。还有其他有用的信息。

标签: python python-import


【解决方案1】:

你可以像这样在函数中添加一个参数:

def calculate_error(lst, size):
    return (size - np.mean(lst)) ** 2

然后,当您调用它时,将 SET_SIZE 传递给 calculate_error()

【讨论】:

  • 非常聪明!谢谢;)我没想到。
【解决方案2】:

您收到错误是因为您有循环导入。如果您来自 EA.py 中的 EA_Functions.py,则不应从 EA_Functions.py 中的 EA.py 导入。

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2012-09-08
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    相关资源
    最近更新 更多