Я использую partial
в библиотечной функции для предоставления ей значения по умолчанию для одного из параметров
library_func = lambda x, y, z : x + y + z
my_func = functools.partial(library_func, z = 5) #default value for one of the variables
# equiv to lambda x, y : x + y + 5
Теперь предположим, что вместо постоянного значения по умолчанию z я хочу, чтобы z былов зависимости от значения yeg, мы ищем z в словаре с ключами, которые имеют разные значения y.
z = {"1":7,"2":8}[str(y)]
# now my_func(x,y) = library_func(x,y,z = f(y))
Возможно ли это?В моем случае использования у меня есть класс, содержащий соединение с базой данных (self.engine
)
self.engine = sqlalchemy.create_engine(connection_string)
self.read_sql = partial(pd.read_sql, con = self.engine)
, а pd.read_sql
имеет сигнатуру типа pd.read_sql(con , name, columns ...)
Я быхотел бы сделать значение по умолчанию для столбцов, которое зависит от значения переданного имени.
Я думал о
self.read_sql = partial(pd.read_sql, con = self.engine, columns = lambda name: self.name_to_column_dict[name])
, но получаю ошибки (по уважительной причине!)