就像你说的,kvargs的**
方便的方式来通几个参数的功能,但它始终是最好的函数定义明确声明参数:
def store(data, database,
user, password,
host=DEFAULT_HOST,
port=PG_DEFAULT_PORT,
chunk_size=64,
flags=None):
pass
# call
params = {"data": generate_data(),
"database": "mydb",
"user": "guest",
"password": "guest",
"chunk_size": 128
}
store(**params)
另一种方法是使用“参数”类,像这样(从pika
库为例):
class ConnectionParameters(Parameters):
def __init__(self,
host=None,
port=None,
virtual_host=None,
credentials=None,
channel_max=None,
frame_max=None,
heartbeat_interval=None,
ssl=None,
ssl_options=None,
connection_attempts=None,
retry_delay=None,
socket_timeout=None,
locale=None,
backpressure_detection=None):
super(ConnectionParameters, self).__init__()
# Create the default credentials object
if not credentials:
credentials = self._credentials(self.DEFAULT_USERNAME,
self.DEFAULT_PASSWORD)
...
# call
conn_params = pika.ConnectionParameters(host=self._host,
port=self._port,
credentials=cred)
conn = pika.BlockingConnection(parameters=conn_params)
你能有什么是代码本身 – armak
类结构,我不明白你的问题。 – GDYendell