擅长:python、mysql、java
<p><code>OpenKey</code>函数位于<code>winreg</code>模块内的<em>。意思是,您需要在它前面加上<code>winreg.</code>才能访问它:</p>
<pre><code>keyVal = winreg.OpenKey(winreg.HKEY_CURRENT_USER,r"AppEvents\{Key2}", 0,KEY_WRITE)
# ^^^^^^^
</code></pre>
<p>对于<code>ConnectRegistry</code>,<code>SetValueEx</code>,以及您在模块中使用的任何其他名称也是一样的。您可以在<a href="https://docs.python.org/3/reference/simple_stmts.html#import" rel="nofollow">docs</a>中了解此行为:</p>
<blockquote>
<p>If no other name is specified, and the module being imported is a top level module, the module’s name is bound in the local namespace as a reference to the imported module</p>
</blockquote>
<p>如您所见,导入模块只会使模块可用。它的所有内容(global/functions/classes/etc)仍然保留在模块的命名空间中。在</p>
<hr/>
<p>或者,可以直接导入计划使用的名称:</p>
^{pr2}$
<p>然后,不需要在它们前面加上<code>winreg.</code>。但我只建议你在使用几个名字的时候这样做。像这样导入几十个名称会导致难看的代码和混乱的全局命名空间。在</p>