我可以将值重新分配给python中的相同变量

Mah*_*aal -2 python string

我在python中有这个变量

DATE_FILENAME =  datetime.datetime.now().strftime("%b-%d-%Y-%I%M%p")
Run Code Online (Sandbox Code Playgroud)

现在这应该每次都有diff值.但我听说字符串是不可变的,这意味着它只能保存一个值

这是结果 _May-22-2011-1002PM.tar.gz

我的脚本花了3分钟备份8个文件夹,但都有相同的date_filename部分.所以我想知道为什么它没有被打开

Kat*_*iel 7

编辑:让我澄清一下:你在模块中定义一次这个常数吗?在这种情况下,它不会改变; 每次要编写文件时都必须更新名称绑定.一个简单的方法是编写一个小函数get_name,每次调用它时都会生成新名称.

字符串不变的原因是,如果此代码处于模块级别(无缩进),那么它将仅在执行模块时执行一次.之后它不会改变.

这是一个与字符串不变性有关的单独问题.


执行此行时,解释器将查找系统时间,根据字符串参数对其进行格式化strftime,并将值存储在变量中.

关于Python中的名称绑定,这里有一个重点.考虑一下这条线

foo = 1
Run Code Online (Sandbox Code Playgroud)

您可能想知道幕后发生了什么.当解释器看到这一行时,它会做两件事:

  1. 它创建一个整数对象并将其存储在某个内部表中.
  2. 它将名称"绑定" foo到这个对象; 换句话说,它记录了foo这个对象在某个内部表中的意思.

重要的一点是,这foo只是我们可能称之为对象的名称1.特别是,你可以foo通过重新绑定来为其他东西命名,比方说foo = 2.但你无法改变1!

以完全相同的方式,您无法更改可能创建的日期时间字符串.那个对象是不可改变的.但是你可以让名字指向不同的字符串或任何类型的不同对象!