python中没有数组类型,但为了模拟它我们可以使用列表.我希望用零填充2d数组结构.我的问题是:在这两个表达式中有什么区别,如果有的话:
zeros = [[0 for i in xrange(M)] for j in xrange(M)]
Run Code Online (Sandbox Code Playgroud)
和
zeros = [[0]*M]*N
Run Code Online (Sandbox Code Playgroud)
会zeros一样吗?通过速度和可读性更好地使用哪一个?
我正在尝试将时区感知datetime对象转换为UTC,然后再回到它的原始时区.我有一个以下代码段
t = datetime(
2013, 11, 22, hour=11, minute=0,
tzinfo=pytz.timezone('Europe/Warsaw')
)
Run Code Online (Sandbox Code Playgroud)
现在在ipython中:
In [18]: t
Out[18]: datetime.datetime(
2013, 11, 22, 11, 0, tzinfo=<DstTzInfo 'Europe/Warsaw' WMT+1:24:00 STD>
)
Run Code Online (Sandbox Code Playgroud)
现在让我们尝试转换为UTC并返回.我希望有相同的表示:
In [19]: t.astimezone(pytz.utc).astimezone(pytz.timezone('Europe/Warsaw'))
Out[19]: datetime.datetime(
2013, 11, 22, 10, 36, tzinfo=<DstTzInfo 'Europe/Warsaw' CET+1:00:00 STD>
)
Run Code Online (Sandbox Code Playgroud)
然而,我们看到Out[18]并且Out[19]有所不同.这是怎么回事?
如果我有一个函数应该在某些条件下执行一个动作,而是返回null,这更干净:
def func():
if not condition:
return None
[...]
return asd
Run Code Online (Sandbox Code Playgroud)
要么
def func():
if condition:
[...]
value = asd
else:
value = None
return value
Run Code Online (Sandbox Code Playgroud)
我已经阅读了每个函数应该有一个返回点的范例.另一方面,python的zen表示flat比嵌套好,后来的版本在整个动作代码上面添加了一个嵌套级别(标记为[...]).
还请记住,条件可能更复杂,例如,添加多个嵌套级别.
我有一个mongoengine.Document子类用户定义.
class User(Document):
meta = {'collection': 'users', 'allow_inheritance': False}
_id = ObjectIdField()
password = StringField(max_length=50)
name = StringField(max_length=50, required
Run Code Online (Sandbox Code Playgroud)
现在我想将它用作具有自己集合的独立文档,但我也想将它作为EmbeddedDocument用作游戏记录的一部分:
class Game(Document):
meta = {'collection': 'games', 'allow_inheritance': False}
_id = ObjectIdField()
name = StringField()
owner = EmbeddedField(User)
Run Code Online (Sandbox Code Playgroud)
但有一个问题.Mongoengine允许仅嵌入EmbeddedDocument子类.有办法解决吗?
python ×4
coding-style ×1
datetime ×1
django ×1
mongodb ×1
mongoengine ×1
oop ×1
pytz ×1
timezone ×1