可能 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')
- 让函数依赖于一个特定的全局变量违背了它们的可重用性的一般目的。
- 您通常不能依赖
assert
语句来实际执行。运行您的代码的人,例如in optimized mode via python -O your_program.py
将有不同的结果,因为 asserts
被忽略。
我对 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')
- 让函数依赖于一个特定的全局变量违背了它们的可重用性的一般目的。
- 您通常不能依赖
assert
语句来实际执行。运行您的代码的人,例如in optimized mode viapython -O your_program.py
将有不同的结果,因为asserts
被忽略。