我已经检查了这个问题,但在那里找不到答案.这是一个演示我的用例的简单示例:
def log(*args):
message = str(args[0])
arguments = tuple(args[1:])
# message itself
print(message)
# arguments for str.format()0
print(arguments)
# shows that arguments have correct indexes
for index, value in enumerate(arguments):
print("{}: {}".format(index, value))
# and amount of placeholders == amount of arguments
print("Amount of placeholders: {}, Amount of variables: {}".format(message.count('{}'), len(arguments)))
# But this still fails! Why?
print(message.format(arguments))
log("First: {}, Second: {}, Third: {}, Fourth: {}", "asdasd", "ddsdd", "12312333", "fdfdf")
Run Code Online (Sandbox Code Playgroud)
并输出:
First: {}, Second: {}, Third: {}, Fourth: …Run Code Online (Sandbox Code Playgroud) 我的问题最初是由一个错误引起的,这里突出显示.原来的问题现在已经解决了,但是这留下了一个关于如何在Python中进行导入的问题.以下是使用Django重现问题的快速步骤:
./manage.py startapp dummy_app在app中models.py定义一个函数和一个扩展Django模型的类,如下所示:
from django.db import models
# auxiliary function in models
def aux_function(value):
print(value)
class Report(models.Model):
class Meta:
managed = False
Run Code Online (Sandbox Code Playgroud)在新的app模块中__init__,导入aux_function如下所述:
from dummy_app.models import aux_function
Run Code Online (Sandbox Code Playgroud)INSTALLED_APPS并运行dev服务器这将导致异常:
File "/home/aanikeev/PycharmProjects/dummy/dummy_app/__init__.py", line 1, in <module>
from dummy_app.models import aux_function
File "/home/aanikeev/PycharmProjects/dummy/dummy_app/models.py", line 8, in <module>
class Report(models.Model):
File "/home/aanikeev/.virtualenvs/dummy/lib/python3.5/site-packages/django/db/models/base.py", line 110, in __new__
app_config = apps.get_containing_app_config(module)
File "/home/aanikeev/.virtualenvs/dummy/lib/python3.5/site-packages/django/apps/registry.py", line 247, in get_containing_app_config
self.check_apps_ready()
File "/home/aanikeev/.virtualenvs/dummy/lib/python3.5/site-packages/django/apps/registry.py", line …Run Code Online (Sandbox Code Playgroud)