这似乎是一个天真的问题,但是到目前为止,我在网络上找不到任何答案,并且我不想在我的代码中引起任何不一致的行为。
我可以在python代码中命名变量now
吗?有一个名为now()
的函数,这就是我对此表示怀疑的原因。
示例:
now = datetime.datetime.now()
是否可以将其视为任何由datetime.datetime.now()
存储返回值的普通变量?还是在任何时候都有不同的表现?
答案 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()
?不。
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
由此我们可以说现在将作为简单变量工作