blog-python-app
blog-python-app copied to clipboard
create_engine函数中的两点疑问
在这个函数中有两点疑问,希望得到雪峰老师的指导
`` for k, v in defaults.iteritems(): params[k] = kw.pop(k, v) # dict.pop(key, default_value) 如果用户未设定,则使用默认值。
params.update(kw)
#上面这段代码不是可以用下面这两句写吗。
params.update(defalults)
params.update(kw)
``
2、问题
`` engine = _Engine(lambda: mysql.connector.connect(**params)) 这里为什么要用lambda ? 本来这句不就是调用一次mysql.connector.connect方法吗。
``
我不是廖雪峰哈, 我说下我的理解。
- 可以那样写,这样更简单些。
- 应该_Engine实例化时 需要持有一个连接对象 而这个连接对象保存的是 调用数据库的方法, 所以是个函数, 当真真调用时 他才会执行。这就相当于 你真真使用连接时 才会调用, 你如果仅仅是声明 是不会获取 连接的。
engine = _Engine(lambda: mysql.connector.connect(**params)) 请问下这个_Engine是从mysql.connector 引用的吗,我看了下没有这个东东