我注意到Pycharm IDE的底部显示有2个进程正在运行。当我单击它时,将打开一个面板,说我的Python解释器正在更新。
我不太确定这里要更新什么:Python吗?康达?其他软件包(因为似乎有一些软件包,例如panda,PyQT在安装栏下弹出)?
这引出了我的下一个问题:这种更新多久会发生一次,因为此更新会大大降低我的Pycharm速度?另外,这是否意味着conda软件包会自动更新?我一直认为您必须在conda命令提示符下手动更新它们。
我理解一个人不应该在Python中使用可变的默认参数值(有一些例外),因为这个值只在定义函数时被评估和存储一次,而不是每次稍后调用该函数.
我对此的理解是这样的(使用下面的例子;请原谅我不精确的语言,因为我只是Python编程的初学者,因为这个而被困在我教科书的功能章节中):
def f(x = [1, 2, 3]):
x.append(4)
print(x)
f()
f()
Run Code Online (Sandbox Code Playgroud)
1)定义函数f,x(f中的局部变量)采用默认变量[1,2,3](甚至在调用函数之前)
2)当调用f()时,x仍然是[1,2,3],因为没有传递给它的参数,并且x继续具有其默认值
3)使用append修改x,变为[1,2,3,4],并按原样打印
然而,这是我的困惑所在.我假设:
4)当f结束时,x被破坏(在堆栈中或你称之为的任何东西)并且不再与列表对象[1,2,3,4]**相关联**
5)回收列表对象[1,2,3,4],因为没有变量引用它了
因此,
6)当第二次调用f()时,我希望Python输出一个错误,因为x现在不再有与之关联的值.换句话说,当Python被回收/销毁时,Python如何重用上次评估的默认值?
感谢您的所有帮助和解释!
**我从Ned Batchelder的变量名称分配页面得到的这种理解(见下文)
