python - 下标问题(脚本实例化并从另一个脚本调用)仅运行被调用函数,而不是整个脚本

标签 python

目标:从上标开始,在 for 循环的每次迭代中,将一个列表发送到下标中的函数,更新该列表,退出下标中的函数,并执行几个操作,然后进入下一次迭代。
问题:只运行我从上标调用的函数,而不是整个下标。
CrossValidationSmall.py(上标)

import subfileTest

data = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J','K']
n = 2

for start in range(0, len(data), n):
    stop = start + n
    test = data[start: stop]
    train = data[:start] + data[stop:]
    subfileTest.set_train_data(train)
subfileTest.py(下标)
train_data = []

def set_train_data(train):
    global train_data
    train_data = train

print(train_data) #should output the lists each time subfileTest is called.
预期产出
MacBook-Pro:SmallerEnviromentTest Me$ python CrossValidationSmall.py
['C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K']
['A', 'B', 'E', 'F', 'G', 'H', 'I', 'J', 'K']
['A', 'B', 'C', 'D', 'G', 'H', 'I', 'J', 'K']
['A', 'B', 'C', 'D', 'E', 'F', 'I', 'J', 'K']
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'K']
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
电流输出
MacBook-Pro:SmallerEnviromentTest Me$ python CrossValidationSmall.py
[]

最佳答案

据我了解,您需要在每次迭代时全部调用您的下标。
事情是这样的:

  • 一旦找到一个新模块就会执行,并且初始执行的模块是缓存 .
  • 当在不同的文件中导入相同的模块时,将返回缓存的版本。
  • 此缓存版本存在于整个进程的生命周期中。

  • 由于您需要在每次迭代时重新运行下标,因此可以使用 Class。类的对象:
  • 存储每次迭代的数据
  • 编写任意数量的函数来处理这些数据
  • 只要您需要,就保留每个对象的值

  • 上标 :
    from subscript import ModelCrossValidator
    
    trial = 0
    
    data = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K']
    n = 2
    
    for start in range(0, len(data), n):
        trial += 1
    
        stop = start + n
        test = data[start: stop]
    
        # train_subset to be used for cross validation
        train_subset = data[:start] + data[stop:]
    
        cross_validator = ModelCrossValidator(train_subset)
        cross_val_score = cross_validator.calc_score()
    
    print("CrossValSet: {}, Data: {}, Score: {:.2}".format(trial, cross_validator.data, cross_val_score))
    
    下标 :
    import random
    
    class ModelCrossValidator:
    
        def __init__(self, train_subset):
            self.data = train_subset     # your folded cross-val data
            self.model = None            # can pass in a model too here
            self.accuracy = 0            # other fields that you might need
    
        def calc_score(self):
            # you can have any number of functions like this.
            # all will deal with only the data from a single object.
    
            self.accuracy = 0.8 + (random.random()) % 0.2
            return self.accuracy
    
    输出:
    Macbook-Pro: chimichanga$ python superscript.py 
    CrossValSet: 1, Data: ['C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'], Score: 0.89
    CrossValSet: 2, Data: ['A', 'B', 'E', 'F', 'G', 'H', 'I', 'J', 'K'], Score: 0.94
    CrossValSet: 3, Data: ['A', 'B', 'C', 'D', 'G', 'H', 'I', 'J', 'K'], Score: 0.9
    CrossValSet: 4, Data: ['A', 'B', 'C', 'D', 'E', 'F', 'I', 'J', 'K'], Score: 0.84
    CrossValSet: 5, Data: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'K'], Score: 0.88
    CrossValSet: 6, Data: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], Score: 0.94
    

    关于python - 下标问题(脚本实例化并从另一个脚本调用)仅运行被调用函数,而不是整个脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63498887/

    相关文章:

    python导入文件夹内的模块

    python - keras LSTM 应该在没有 input_shape 参数的情况下工作吗?

    python - 可以使用多处理库从 Flask Controller 中启动单独的进程吗?

    python - 防止消息作者使用命令 Discord.py 提及自己

    python - 名义有序列表中 scipy.stats.spearmanr 的参数是什么?

    Python 导入 - 解释

    python - Keras错误: TypeError: 'int' object is not iterable

    python - 在不失去向后兼容性的情况下向包装函数添加第二个返回值

    python - 我可以在 Centos 7 上安装 node.js 18 吗?我还需要安装 python 3 吗?

    python - PyGTK TreeView : Prevent last column from growing