繁体   English   中英

为此,我如何提高 python 中的代码可读性?

[英]How can I increase code readability in python for this?

我在 Flask 中运行我的脚本,为了捕获并打印服务器上的错误,我创建了一些函数,如果成功则返回None ,否则返回一条error message

问题是我有许多函数一个接一个地运行并使用早期 function 的全局变量,这使得代码变得杂乱无章。 我能做什么?

应用程序.py

from flask import Flask
from main import *


app = Flask(__name__)
@app.route('/')
def main():
    input = request.args.get('input')
    first_response = function1(input)

    if first_response is None:
        second_response = function2() # no input from hereon

        if second_response is None:
            third_response = function3() # functions are imported from main.py

            if third_response is None:
            ...
               if ...

               else ...
            else: 
                return third_response
        else:
             return second_response
    else:
        return first_response

主程序

def function1(input):
    global new_variable1
    if input is valid:
        new_variable1 = round(input,2)
    else:
        return "the value is not integer"

def function2():
    global new_variable2
    if new_variable1 > 8:
         new_variable2 = new_variable1 / 8
    else: 
       return "the division is not working, value is 0"

def function3():
...

这只是正在发生的事情的演示。 最后一个 function 将在任一侧返回一个值。 因此,如果一切顺利,我将能够看到正确的 output,并且我将在任何给定的 function 上看到错误。

代码工作正常,但我需要更好的选择来做到这一点。

谢谢!

啊......你已经(正确地)确定你有两件事要做:

  1. 处理您的数据,以及
  2. 处理错误。

因此,让我们用参数替换全局数据来处理数据(稍后再回到错误处理)。 你想做这样的事情。

主程序

    def function1(some_number):
        if some_number is valid:
            return round(some_number, 2)

    def function2(a_rounded_number):
        if a_rounded_number > 8:
            return a_rounded_number / 8

所以每个 function 应该返回它的工作结果。 然后调用例程可以将每个 function 的结果发送到下一个 function,如下所示:

应用程序.py


   # [code snipped]

   result1 = function1(the_input_value)
   result2 = function2(result1)
   result3 = function3(result2)

但是......我们如何处理意外或错误情况? 我们使用异常,像这样:

主程序

    def function1(some_number):
        if some_number is valid:
            return round(some_number, 2)
        else:
            raise ValueError("some_number was not valid")
     

然后在调用程序中

应用程序.py


   try:
       result1 = function1(some_input_value)
   except (ValueError as some_exception):
       return str(some_exception)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM