由于Java不允许将方法作为参数传递,您使用什么技巧来实现Java中的列表理解?
我有一个字符串列表(ArrayList).我需要使用一个函数转换每个元素,以便我得到另一个列表.我有几个函数,它们将String作为输入,并返回另一个String作为输出.如何创建一个通用方法,可以将列表和函数作为参数给出,这样我就可以获得一个列表,并处理每个元素.在字面意义上是不可能的,但我应该使用什么技巧?
另一种选择是为每个较小的String处理函数编写一个新函数,它只是循环遍历整个列表,这有点不太酷.
我有一个很好用的Django应用程序.我正在添加REST服务.我正在寻找关于我的REST策略的一些额外输入.
这里有一些我正在绞尽脑汁的例子.
请为每个答案指定一种方法,以便我们可以向上或向下投票.
在Django,我到处都有记录器,目前有硬编码的名字.
对于模块级日志记录(即,在视图函数模块中),我有这样做的冲动.
log = logging.getLogger(__name__)
Run Code Online (Sandbox Code Playgroud)
对于类级别的日志记录(即,在类__init__方法中),我有这样做的冲动.
self.log = logging.getLogger("%s.%s" % (
self.__module__, self.__class__.__name__))
Run Code Online (Sandbox Code Playgroud)
在我解决几十次事件之前,我正在寻找第二意见getLogger("hard.coded.name").
这会有用吗?还有其他人用同样缺乏想象力的方式命名他们的记录器吗?
此外,我应该分解并为此日志定义编写类装饰器吗?
http://pypi.python.org/pypi/simplejson
我只是潜入Python世界,并希望制作一个简单的twitter应用程序,需要安装simplejson但不知道如何设置它并让它工作..
我在Windows系统上
我是Python的新手,我试图找出计算特定子目录中.TIF文件数量的最有效方法.
做了一些搜索,我发现了一个例子(我没有测试过),它声称要计算目录中的所有文件:
file_count = sum((len(f) for _, _, f in os.walk(myPath)))
Run Code Online (Sandbox Code Playgroud)
这很好,但我只需要计算TIF文件.我的目录将包含其他文件类型,但我只想计算TIF.
目前我使用以下代码:
tifCounter = 0
for root, dirs, files in os.walk(myPath):
for file in files:
if file.endswith('.tif'):
tifCounter += 1
Run Code Online (Sandbox Code Playgroud)
它工作正常,但循环对我来说似乎过多/昂贵.任何方式更有效地做到这一点?
谢谢.
所以我只是学习python(我知道很多其他语言)而且我对某些东西感到困惑.我认为这是由于缺乏文档(至少我能找到).在一些网站上,我读过你应该从object以下方面派生你的课程:
class Base(object):
pass
但我不知道那是做什么或为什么或何时应该这样做.我是否错过了关于此的官方文件?这是一个3.x功能吗?
我正在努力改进我们小组的开发过程,我正在考虑如何最好地实现与测试驱动开发合同设计.看来这两种技术有很多重叠,我想知道是否有人对以下(相关)问题有所了解:
这些问题的主要问题是这个更普遍的问题:如果我们已经正确地进行了TDD,如果我们也使用DbC,我们是否会从开销中获得显着的好处?
一些细节,虽然我认为这个问题主要与语言无关:
我想修改Django内置django.contrib.auth模块的一些细节.具体来说,我想要一个不同的表单,使用户名成为一个电子邮件字段(并通过电子邮件发送一个备用电子邮件地址.(我不想修改auth任何超过必要的内容 - 简单的表单更改似乎就是所需要的.)
当我使用autodiscover自定义的时候ModelAdmin,auth我最终会与auth自己的管理界面冲突,并获得"已经注册"的错误.
看起来我必须创建自己的管理站点,枚举我的所有模型.它只有18个类,但它似乎是一个干燥问题 - 每个更改都需要添加到模型并添加到自定义管理站点.
或者,我应该编写自己的" autodiscoverwith exclusions" 版本来基本导入所有admin模块,除了 auth?
这是我们面对装饰时遇到的第一个例子.但是我无法意识到我到底想要什么.
一个名为LOG的简单装饰器.它应该像这样工作:
@LOG
def f(a, b=2, *c, **d):
pass
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的:
f(1, pippo=4, paperino='luca')
===== Enter f =====
a = 1
b = 2
pippo = 4
paperino = luca
===== Exit f =====
Run Code Online (Sandbox Code Playgroud)
将作为参数传递给函数的每个参数显示为其值.
我发现问题比我想象的更难,主要是因为你可以通过许多不同的方式将参数传递给函数(想想带有*c的元组或带有**d的字典).
我试过一个解决方案,但我不确定它是否正确.它有点像这样:
def LOG(fn):
import inspect
varList, _, _, default = inspect.getargspec(fn)
d = {}
if default is not None:
d = dict((varList[-len(default):][i], v) for i, v in enumerate(default))
def f(*argt, **argd):
print ('Enter %s' % fn).center(100, '=')
d.update(dict((varList[i], v) for i, v in enumerate(argt)))
d.update(argd) …Run Code Online (Sandbox Code Playgroud) python ×8
django ×3
logging ×2
apache ×1
class ×1
count ×1
decorator ×1
django-admin ×1
file ×1
forms ×1
inheritance ×1
java ×1
methods ×1
parameters ×1
rest ×1
simplejson ×1
sql-server ×1
tdd ×1