前言:
到目前为止,我已经将Python用作全面的编程语言.现在我喜欢用它来记录一些注释(注释)和一些计算(Python代码)(我实际上是使用Emacs并将当前缓冲区一次又一次地发送到正在运行的IPython实例).
问题:我喜欢在同一个文档中多次重用一些常见的变量名,如'A'或'd',而不会遇到我不小心忘记将值重新分配给其中一个变量名的问题.
到目前为止,我滥用了课堂陈述
# Topic one: bla bla
class _anon:
d = 10
A = d**2 * pi /4
# Topic two: bla bla
class _anon:
A = d**2 * pi /4 # error is raised since d is missing
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为类语句创建了一个作为变量作用域的执行框架,但我想知道这个用例是否有专用语法.
如果我想模拟 C/C++ 块,这通常可以解决问题:
def _anon():
d = 10
A = d**2 * pi /4
_anon()
Run Code Online (Sandbox Code Playgroud)
这些“块”可以嵌套。
如果一小块初始样板是可以接受的,您还可以使用装饰器来调用该函数:
def block(function):
function()
Run Code Online (Sandbox Code Playgroud)
现在你不必重复它的名字:
@block
def _anon():
d = 10
A = d**2 * pi /4
Run Code Online (Sandbox Code Playgroud)
请注意,函数装饰器通常会返回一个函数,但这个函数不会。结果是执行代码后名字“_anon”指向“None”,所以代码块真的是匿名的。
小智 3
不。只有classanddef块和模块(以及在更新的版本中,列表推导式和生成器表达式 - 但在这里不适用)引入了新的范围。并且只有类直接执行。因此,如果你想继续这种有争议的 Python 使用方式,你就必须坚持滥用class,或者定义函数并直接调用它们。在源代码级别为每个计算使用不同的文件稍微不那么难看,但如果计算总是那么小,可能不值得。
| 归档时间: |
|
| 查看次数: |
1370 次 |
| 最近记录: |