我在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部分.所以我想知道为什么它没有被打开
编辑:让我澄清一下:你在模块中定义一次这个常数吗?在这种情况下,它不会改变; 每次要编写文件时都必须更新名称绑定.一个简单的方法是编写一个小函数get_name,每次调用它时都会生成新名称.
字符串不变的原因是,如果此代码处于模块级别(无缩进),那么它将仅在执行模块时执行一次.之后它不会改变.
这是一个与字符串不变性有关的单独问题.
执行此行时,解释器将查找系统时间,根据字符串参数对其进行格式化strftime,并将值存储在变量中.
关于Python中的名称绑定,这里有一个重点.考虑一下这条线
foo = 1
Run Code Online (Sandbox Code Playgroud)
您可能想知道幕后发生了什么.当解释器看到这一行时,它会做两件事:
foo到这个对象; 换句话说,它记录了foo这个对象在某个内部表中的意思.重要的一点是,这foo只是我们可能称之为对象的名称1.特别是,你可以foo通过重新绑定来为其他东西命名,比方说foo = 2.但你无法改变1!
以完全相同的方式,您无法更改可能创建的日期时间字符串.那个对象是不可改变的.但是你可以让名字指向不同的字符串或任何类型的不同对象!
| 归档时间: |
|
| 查看次数: |
997 次 |
| 最近记录: |