我很难理解__init__.py我项目中python 文件的使用场景或设计目标.
假设我有'model'目录(引用为包),其中包含以下文件
__init__.pymeta.pysolrmodel.pymongomodel.pysamodel.py我发现了两种使用方式__init__.py:
我有共同的需要被用于定义solrmodel.py,mongomodel.py,samodel.py.我可以__init__.py用作所有*model.py类的基本/公共定义吗?这意味着我必须导入model/__init__.py.
或者,它__init__.py应该自己导入solrmodel.py,mongomodel.py,samodel.py的定义,它允许轻松导入类或函数,如下所示:
# file: __init__.py
from mongomodel import *
from solrmodel import *
from samodel import *
Run Code Online (Sandbox Code Playgroud)
(我知道import *不建议这样做,我只是将它作为惯例使用)
我无法在上述两种情况之间做出决定.是否有更多的使用场景,__init__.py您能解释一下使用情况吗?
我试图用Python读取JPG图像.
到目前为止,我有:
f = open("test.jpg")
ima = f.read(16)
print "'%s'"% (ima)
Run Code Online (Sandbox Code Playgroud)
它读取16个字节并在控制台中显示字符串,但看起来我不能显示超过32个字节.为什么?
当它尝试读取32个或更多字节时,输出将与读取16个字节时的输出相同.为什么我不能读取超过16个字节的jpeg图像?
假设您的任务是编写必须以某种格式存储配置信息的Web应用程序.与将信息存储在文件中相比,将这些配置信息存储在关系数据库中有什么好处和缺点?配置选项可以包括但不限于数据保留设置和与外部系统接口的设置(例如,IP地址,端口,用户名,密码).
我在空闲时间学习常见的口齿不清,对条件系统有疑问.
当我们处理常见的lisp中的错误时,我们在处理程序中指定错误类型以确定要处理的错误.在引发和处理错误之间,我可以进行一些重启(例如使用restart-case),但我无法在重启时指定错误类型.
例如,假设我有一个带字符串和流的函数,将字符串发送到流并从流中读取响应并返回它.假设如果我的消息错误,我会从流中读取错误响应.我想提出一个错误并绑定一个重新启动,要求这样的新消息:
(defun process-message (stream raw-message)
(let ((response (get-response stream raw-message)))
(restart-case
(when (response-error-p response)
(error 'message-error :text response))
(change-raw-message (msg)
(process-message stream msg)))))
Run Code Online (Sandbox Code Playgroud)
现在假设消息很复杂,我send-command在更高级别获得了另一个函数,可以从某些参数创建消息并调用process-message.我想绑定另一个重启recreate-command-message,允许用户在'message-error获取时从参数发送新命令.这种重启可能是重启的情况process-message,但不完全正确,因为process-message不应该知道这样的高级函数send-command,并且返回值可能不同.
但是现在流错误(例如EOF等)将被抛出recreate-command-message,如果套接字失败,recreate-command-message重启将在某些超级高级socket-error处理程序中可用,并且此重启将是无用的并且惯用错误.
这是一个程序设计问题,应该设计一个程序来避免这样的问题,或者我只是找不到如何将重启绑定到错误类型或者我不正确理解条件系统?
谢谢.