Python 如何以严格的顺序调用函数?

Python 如何以严格的顺序调用函数?,python,Python,我编写了以下函数,这些函数应严格按照正确程序流的顺序调用: 读取文件config.json 连接到SQL Server 查找目录中的所有SQL文件 执行所有SQL文件并将结果保存到CSV文件 在邮件中发送带有结果的CSV文件 将CSV文件写入Google工作表文档 关闭SQL Server会话 def read_config(): .... 返回配置 def connect_to_sql_服务器(配置): .... 回路连接 def find_sql_files_而不遍历(配置): ... 返回

我编写了以下函数,这些函数应严格按照正确程序流的顺序调用:

  • 读取文件config.json

  • 连接到SQL Server

  • 查找目录中的所有SQL文件

  • 执行所有SQL文件并将结果保存到CSV文件

  • 在邮件中发送带有结果的CSV文件

  • 将CSV文件写入Google工作表文档

  • 关闭SQL Server会话

  • def read_config():
    ....
    返回配置
    def connect_to_sql_服务器(配置):
    ....
    回路连接
    def find_sql_files_而不遍历(配置):
    ...
    返回文件列表
    def exec_sql_和_save_至_csv(文件列表、连接、配置):
    ...
    返回csv\u文件
    def发送电子邮件(csv文件,配置):
    ...
    返回
    def save_to_gspread(csv_文件):
    ...
    返回
    def关闭sql服务器连接器(连接):
    ....
    返回
    
    我这样调用函数:

    send_email(exec_sql_和保存_至_csv(查找不带遍历的_sql_文件(read_config()),连接_至_sql_服务器(read_config()),read_config(),read_config())
    保存到\u gspread(exec\u sql\u和保存到\u csv(查找没有遍历的\u sql\u文件(read\u config()),连接到\u sql\u服务器(read\u config()),read\u config())
    关闭sql服务器连接(连接到sql服务器(读取配置())
    
    在我看来,这是调用函数的错误方式


    非常感谢您的回复。

    一种方法是按照所需的顺序调用函数,并将结果分配给变量,作为下一个函数的输入:

    
    config=read_config():
    连接=连接到sql服务器(配置)
    files\u list=find\u sql\u files\u无需遍历(配置)
    csv_file=exec_sql_和_save_to_csv(文件列表、连接、配置)
    发送电子邮件(csv文件,配置)
    将_保存到_gspread(csv_文件)
    关闭sql服务器连接(连接)
    
    注意:我建议检查Python中的不同编程范例,并选择最适合未来开发需要的范例。

    一种方法是按所需顺序调用函数,并将结果分配给变量,作为下一个函数的输入:

    
    config=read_config():
    连接=连接到sql服务器(配置)
    files\u list=find\u sql\u files\u无需遍历(配置)
    csv_file=exec_sql_和_save_to_csv(文件列表、连接、配置)
    发送电子邮件(csv文件,配置)
    将_保存到_gspread(csv_文件)
    关闭sql服务器连接(连接)
    
    注意:我建议检查Python中的不同编程范例,并选择最适合未来开发需要的范例。 如果是我,我会:

    从contextlib导入关闭
    config=read_config()
    关闭(连接到sql服务器(配置))作为连接:
    sql\u files=在没有遍历的情况下查找sql\u文件(配置)
    csv_file=exec_sql_和_save_to_csv(sql_files,conn,config)
    发送电子邮件(csv文件,配置)
    将_保存到_gspread(csv_文件)
    
    如果是我,我会:

    从contextlib导入关闭
    config=read_config()
    关闭(连接到sql服务器(配置))作为连接:
    sql\u files=在没有遍历的情况下查找sql\u文件(配置)
    csv_file=exec_sql_和_save_to_csv(sql_files,conn,config)
    发送电子邮件(csv文件,配置)
    将_保存到_gspread(csv_文件)
    
    每次在代码中读取_config(),都会再次调用此函数。您的代码可以工作,但它将运行多次

    这对我来说不好

    1.速度:您的代码将变慢,因为您在不需要的地方调用了太多函数

    2.可读性:代码行号会更短,但更难理解。短代码并不总是好的

    e、 简而言之,我们可以为config编写c,但这不容易理解。这样写好多了

    这是完全可以理解的,我不会改变它,因为它是完全正确的

    config=read\u config()
    连接=连接到sql服务器(配置)
    files\u list=find\u sql\u files\u无需遍历(配置)
    csv_file=exec_sql_和_save_to_csv(文件列表、连接、配置)
    发送电子邮件(csv文件,配置)
    将_保存到_gspread(csv_文件)
    关闭sql服务器连接(连接)
    
    每次在代码中读取_config(),都会再次调用此函数。您的代码可以工作,但它将运行多次

    这对我来说不好

    1.速度:您的代码将变慢,因为您在不需要的地方调用了太多函数

    2.可读性:代码行号会更短,但更难理解。短代码并不总是好的

    e、 简而言之,我们可以为config编写c,但这不容易理解。这样写好多了

    这是完全可以理解的,我不会改变它,因为它是完全正确的

    config=read\u config()
    连接=连接到sql服务器(配置)
    files\u list=find\u sql\u files\u无需遍历(配置)
    csv_file=exec_sql_和_save_to_csv(文件列表、连接、配置)
    发送电子邮件(csv文件,配置)
    将_保存到_gspread(csv_文件)
    关闭sql服务器连接(连接)
    
    为什么不使用一些变量?
    config=read\u config()
    一次。然后在随后的方法调用中使用config对象。其他返回某些内容的方法也是如此。试着复制你在问题要点中记下的任何内容。逐个单独调用每个函数,并将它们的结果(如果适用)分配给一个变量,供你在下一个函数中使用。对我来说,你的
    send\u email
    函数不应接受任何输入。它应该调用它所需要的所有其他函数,并考虑您想要的顺序。为什么不使用一些变量呢?
    config=read\u config()
    一次。然后在随后的me中使用config对象