当前位置: 首页 > 面试题库 >

如何在python中创建新作用域

郦兴德
2023-03-14
问题内容

在许多语言(和地方)中,都有一种不错的做法,即通过创建一个像这样的块来创建本地范围。

void foo()
{
     ... Do some stuff ...

     if(TRUE)
     {
         char a;
         int b;

         ... Do some more stuff ...
     }

     ... Do even more stuff ...
 }

我该如何在python中实现此功能而又不会出现意外的缩进错误,也不会使用某种_if_技巧 _:_


问题答案:

在Python中,作用域分为三种类型:全局,局部和类。您可以创建专门的“作用域”词典以传递给exec /
eval()。另外,您可以使用嵌套作用域(在另一个作用域中定义一个函数)。我发现这些在我的所有代码中就足够了。

正如道格拉斯·里德(Douglas
Leeder)所说,在其他语言中使用它的主要原因是变量作用域,而这在Python中并没有真正发生。另外,Python是我使用过的最具可读性的语言。进行诸如if-
true的技巧(这就是您要避免的内容)之类的操作会影响可读性。在那种情况下,我认为最好的选择是将您的代码重构为多个函数,或者使用单个作用域。我认为Python中可用的作用域足以覆盖所有可能发生的情况,因此,本地作用域并不是真正必要的。

我希望这有帮助。



 类似资料:
  • 我对tries和DAWGs(直接无环字图)很感兴趣,我已经读了很多关于它们的东西,但我不明白输出trie或DAWG文件应该是什么样子。 null 我也会很感激一个DAWG和Trie的输出。 我不想看到带有相互链接的气泡的图形表示,我想知道一旦一组单词被转换为try或dawgs后的输出对象。

  • 有一个创建工作流的指南,但老实说没有那么大的帮助。 https://www.jetbrains.com/help/youtrack/standalone/workflow-guide.html 它创建问题实体,但不创建sprint。我找不到,我如何添加属性(日期-范围,名称,板)到新的sprint。

  • 问题内容: 我正在打印星空金字塔,我无法打印新行。 问题答案: 使用换行符。 您还可以拥有多个: 但是,如果将其呈现为HTML,则需要将HTML标签用于换行符: 源代码中的字符串如下所示: 该字符串在HTML源代码中将如下所示: HTML页面将以换行符的形式呈现给查看该页面的用户,只是将文本拖放到源代码的下一行(如果在HTML页面上)。

  • 问题内容: 我经常在Objective-C中使用局部作用域来使命名更清晰。 我试图像这样在Swift中重写此代码: 这使我得到以下错误: 那么如何在Swift中创建本地作用域呢? 问题答案: 更新: 在Swift 2.0中,您只需使用关键字: 这对于Swift 2.0之前的版本是正确的: 您可以定义与此类似的内容: 然后使用如下代码: (受Scala的 Predef 对象启发。)

  • 问题内容: 如何使用Python在Linux中创建用户?我的意思是,我了解子流程模块,并考虑过调用“ adduser”并立即传递所有参数,但是“ adduser”命令会询问一些问题,例如密码,全名,电话和其他东西。我将如何使用子流程回答这个问题?我在以下问题中看到了名为pexpect的模块:我可以将Python用作Bash的替代品吗?。还有其他标准模块吗? 问题答案: 使用,它不会提出任何问题,但

  • 问题内容: 我对尝试和DAWG(直接非循环字图)感兴趣,并且已经阅读了很多有关它们的信息,但我不知道输出trie或DAWG文件应该是什么样。 特里应该是嵌套词典的对象吗?每个字母分为几个字母,依此类推? 如果存在100k或500k条目,对这样的词典执行的查找会很快吗? 如何实现由多个单词组成的单词块,用-空格或空格分隔? 如何将单词的前缀或后缀链接到结构的另一部分?(对于DAWG) 我想了解最佳的