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_而不遍历(配置): ... 返回
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对象