我可以在 python 中命名一个变量 "now"

Can I name a variable "now" in python

这似乎是一个幼稚的问题,但到目前为止我在网络上没有找到任何答案,我不想在我的代码中造成任何不一致的行为。

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

示例:

now = datetime.datetime.now()

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

它将作为 Varibale

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

输出:

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

"Now" 变量的类型是

type(now)

变量的数据类型是

datetime.datetime

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

以下是 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

希望能回答你的问题

now不是python中的关键字,所以可以作为变量名使用。


有没有机会干扰datetime.datetime.now()?号

详细说明:也没有名为 now() 的函数;它绑定到 datetime 对象(它是一个 class 方法),您将始终需要 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()不是内置函数,如上所述。

* 有一些方法可以检索原始内置函数,即使在重新分配后也是如此,但这超出了本主题的范围。

import this

Namespaces are one honking great idea -- let's do more of those!

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

a = 1

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

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

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