可能 python 重构?

Possible python refactor?

我对 python 还很陌生,所以只是寻求有关是否可以重构此代码块的帮助。我确实需要保存 aCount 和 bCount 的单独变量供以后使用,但想知道是否可以简化它

def enterA(message):
    while True:
        try:
            global aCount
            aCount = float(input(message))
            assert aCount > 0.00
            break
        except:
            print("Error, enter float")

def enterB(message):
    while True:
        try:
            global bCount
            bCount = float(input(message))
            assert bCount > 0.00
            break
        except:
            print("Error, enter float")

您可以执行以下操作:

def enter_num(message):
    while True:
        try:
            num = float(input(message))
            assert num > 0.00
            return num
        except:
            print("Error, enter float")
message = "Please provide a number:"
aCount = enter_num(message)
bCount = enter_num(message)

不要使用全局变量。不要使用 assert 作为执行流程逻辑。

def enter_var(message):
    while True:
        try:
            var = float(input(message))
            if var > 0.00:
                return var
        except:
            pass
        print("Error, enter positive float")

a_count = enter_var('Prompt for a')
b_count = enter_var('Prompt for b')
  1. 让函数依赖于一个特定的全局变量违背了它们的可重用性的一般目的。
  2. 您通常不能依赖 assert 语句来实际执行。运行您的代码的人,例如in optimized mode via python -O your_program.py 将有不同的结果,因为 asserts 被忽略。