【问题标题】:Can I name a variable "now" in python我可以在python中命名一个变量“now”吗
【发布时间】:2019-01-11 06:19:34
【问题描述】:

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

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

例子:

now = datetime.datetime.now()

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

【问题讨论】:

  • 现在不是python中的关键字。所以你可以毫无问题地使用它。
  • 详细说明:也没有名为 now() 的函数;它与datetime 对象绑定(它是一个类方法),您总是需要datetime.now() 才能使用它。因此,它始终与名为 now 的变量区分开来。

标签: python datetime datetime-format python-datetime


【解决方案1】:

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

希望能回答你的问题

【讨论】:

  • 我不认为这是让 OP 担心的问题,因为分配给关键字会导致 SyntaxError,因此无法做到这一点。 OP担心覆盖现有函数(如listmap),这确实是可能的,但不是一件好事。
  • @9769953 据我了解,他更关心他是否可以使用 now 关键字,我给了他所有不能使用的保留关键字的列表,除此之外他可以使用任何关键字他想要。
  • 句子“有一个名为 now() 的函数,这就是我怀疑的原因。”另有建议:它谈论的是功能,而不是关键字。
  • 请注意,您的列表对 Python 2 有效,对 Python 3 无效,因为在存在 print 时缺少 FalseNoneTrue(以及 async 和 @ 987654329@ 用于更高的 Python 3 版本)。最好注意您所指的 Python 版本,并链接到官方文档。
  • @9769953 句子“我现在可以在我的 python 代码中命名一个变量吗?”让我想知道用户是否更关心保留关键字。
【解决方案2】:

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() 不是内置函数,如上所述。

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

【讨论】:

    【解决方案3】:

    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
    

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

    【讨论】:

      【解决方案4】:

      它将作为变量工作

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

      输出:

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

      “现在”变量的类型是

      type(now)
      

      变量的数据类型是

      datetime.datetime
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-02
        • 2021-08-23
        • 1970-01-01
        • 1970-01-01
        • 2020-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多