有没有一种方法可以通过更改 python 脚本中的变量来更改控制台或终端输出

Is there a way to make the console or terminal output change by just changing a variale in the python script

大家好。也许有什么我不明白的。在这种情况下,如何通过更改变量 a、b 或 c 来更改控制台的输出。无需重新加载控制台。我要么让它输出一次,然后我有一个闪烁的提示,要么它打印大量的行。这是我的测试:

a = 1 
b = 1 
c = 1 
print(a, b, c)

def messenger():
    while a and b and c:
            print("True")
    else:
            print("False")
            time.sleep(5)

因此,如果我更改变量:脚本中的 a、b 或 c,保存文件,然后观察控制台是否有变化。任何帮助将不胜感激。

由于 a、b、c 是变量,它们存储在 运行 时间内分配给脚本的内存中。

如果不重新 运行 脚本,您将无法更改这些值,这将释放旧内存,重新分配新内存,并 运行 您的代码。

我怀疑您需要实施这样的解决方案,像这样更改变量;将比您轻松实施的工作要多得多(对此的解决方案可以是独立的中间项目)

您最好从文件或数据库中将值读入这些变量。

with open('filefora.txt', 'r') as f:
    a = int(f.readline())
with open('fileforb.txt', 'r') as f:
    b = int(f.readline())
while True:
    if a and b:
        print(True)  
    else:
        print(False)
    with open('filefora.txt', 'r') as f:
        a = int(f.readline())
    with open('fileforb.txt', 'r') as f:
        b = int(f.readline())

现在每次您在文件中更改相应 var 的值时,代码将使用该新值而无需重新运行 脚本。

更好的方法是重新运行文件。

@Anu 对更新 a、b 和 c 的值提出了一个很好的观点。 此代码用于在不打印换行符的情况下将结果打印到控制台。

import time

#This function does something to the values of a, b and c
def foo(a, b, c):
    return a, b, c
a = 1
b = 1
c = 1
while True:
    a, b, c = foo(a, b, c)
    if a and b and c:
        print("\rTrue", end='')
        time.sleep(1)
    else:
        print("\rFalse", end='')
        time.sleep(1)

我认为您完全不知道该程序的工作原理或它在控制台中的显示方式。

如果我以 Python 为例,而你 运行 一个 Python 的程序,除非它是 .pyw 而不是 .py.

你可能已经知道 Python 是一种解释器语言,它逐行转换为二进制,而不像 C++ 和 Java 等其他高级语言首先编译代码.

现在,如果你 运行 你的 Python 程序,解释器会将整个程序转换为机器可读状态,这就是它查找错误的时候,然后会出现一个控制台向您展示输出。

但是,如果您打开源代码(人类可读的代码)并进行更改并保存,则不会影响控制台。为什么?这是因为该代码仍然是源代码,永远不会转换为机器可读代码,除非您 运行 它(这将打开另一个控制台,向您显示已保存的源代码更改的输出)。

根据您提出的问题,我建议关闭程序,进行更改并重新运行。 @Anu 的回答有利于获取文件中保存的数据并将保存的值用作变量,而不是用于您要求的目的,因为它会使程序面临安全漏洞。