我可以在python中将变量命名为“ now”吗?

时间:2018-08-03 11:03:57

标签: python datetime datetime-format python-datetime

这似乎是一个天真的问题,但是到目前为止,我在网络上找不到任何答案,并且我不想在我的代码中引起任何不一致的行为。

我可以在python代码中命名变量now吗?有一个名为now()的函数,这就是我对此表示怀疑的原因。

示例:

now = datetime.datetime.now()

是否可以将其视为任何由datetime.datetime.now()存储返回值的普通变量?还是在任何时候都有不同的表现?

4 个答案:

答案 0 :(得分:2)

下面是python中使用的关键字,除此之外,您可以使用任何想要的关键字

False      await      else       import     pass
None       break      except     in         raise
True       class      finally    is         return
and        continue   for        lambda     try
as         def        from       nonlocal   while
assert     del        global     not        with
async      elif       if         or         yield

我希望能回答您的问题

答案 1 :(得分:1)

now不是python中的关键字,因此您可以将其用作变量名。


是否有可能干扰datetime.datetime.now()?不。

详细说明:也没有命名为now()的函数;它绑定到datetime对象(这是一个类方法),您将始终需要datetime.now()才能使用它。因此,它始终与名为now的变量区分开来。

(如果您按以下方式分配):

now = datetime.datetime.now

在这里,名为now的新变量等于datetime.now() 函数(不是函数的结果)。但是在这种情况下,您要对此工作完全负责。即使这样,将now更改为其他内容也不会更改datetime.now

但是,使用

now = datetime.datetime.now()

将函数调用的结果分配给变量now(不是函数本身),并且该函数保持不变。


值得注意的是,是否应该覆盖内置函数。 This is the list of built-in functions in Python 3.7

您可以为这些名称中的每一个分配一个值,但实际上您会丢失该功能 * ,以后可能会遇到麻烦。例如:

str = "Hello there"
a = 123
<more code>
value = str(a)  # causes a TypeError, because we re-assigned str

因此,请避免这种情况(list = [1,2,3]是另一个应避免的常见错误)。

但是now()不是内置函数,如上所述。

* 即使重新分配后,也有一些方法可以检索原始的内置函数,但这不在本主题的讨论范围之内。

答案 2 :(得分:1)

import this

  

命名空间是一个很棒的主意-让我们做更多的事吧!

即使有一个名为now的函数,也可以将datetime.datetime.now()用作变量,因为该函数位于另一个命名空间中。每个模块(例如模块datetime)都是一个命名空间,并且模块中的每个类或类型(例如datetime.datetime)都是一个单独的命名空间。即使在函数内部,您也可以创建一个与周围代码中定义的名称相同的局部变量:

a = 1

def f(x):
    a = x + 2
    print (a)

f(4)                  # prints 6
print (a)             # prints 1

尽管这样做可能会使您的代码读者(包括您自己)感到困惑。

答案 3 :(得分:0)

它将用作Varibale

from datetime import datetime
now = datetime.now()
now

输出:

datetime.datetime(2018, 8, 3, 16, 36, 54, 182551)

“现在”变量的类型是

type(now)

变量的数据类型为

datetime.datetime

由此我们可以说现在将作为简单变量工作