我有两个 python 函数,其中一个函数使用另一个函数。我必须将相同的变量传递给两者。有没有办法让第二个函数知道传递给第一个的变量,而不是显式地将变量传递两次?
现在,我将变量作为输入传递给第一个函数,然后将其传递给第二个函数。
我当前代码的结构是:
def DB_Connection(source):
conn = pyodbc.connect(dsn=source)
return conn
def DB_Query(source, sql_string):
conn = DB_Connection(source)
data = pd.read_sql(sql_string, conn)
return data
这按预期工作;但是,我不知道这是否是最佳做法。相反,有没有一种方法可以执行以下操作,其中 DB_Connection()
知道 source
因为它已传递到 DB_Query()
:
def DB_Connection(source):
conn = pyodbc.connect(dsn=source)
return conn
def DB_Query(source, sql_string):
conn = DB_Connection()
data = pd.read_sql(sql_string, conn)
return data
最佳答案
这是类的用例之一,用于在方法之间共享数据。
class DBConnection:
def __init__(self, source):
self.source = source
def get_connection(self):
return pyodbc.connect(dsn=self.source)
def query(self, sql_string):
return pd.read_sql(sql_string, self.get_connection())
db = DBConnection(...)
db.query("SELECT foo from bar")
这个类还可以更轻松地在查询之间共享单个连接,而不是让 query
每次都打开一个新连接。
class DBConnection:
def __init__(self, source):
self.source = pyodbc.connect(dsn=source)
def get_connection(self):
return self.source
def query(self, sql_string):
return pd.read_sql(sql_string, self.source)
关于python - 有没有办法让函数内部的函数知道传递给父函数的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55458615/