如何在 Python 中创建块作用域变量?

问题描述 投票:0回答:2

采用以下 Perl 代码:

$a = 5;

if($a == 5)
{
    print $a;
    my $a = 8;
    print $a;
}

print $a;

这会输出

585
,因为
my $a
创建了一个新的词法变量,其作用域为
if
块。

我想在Python中做同样的事情,但是这个:

a = 5
b = 9

if a == 5:        
    print("inside function", b)
    b = 'apple'

print(b)

输出

inside function 9
apple

变量

b
被覆盖在
if
内部。有没有办法在
b
语句中创建局部变量
if
?我想在
if
内使用与局部作用域相同的变量名。

python scope
2个回答
2
投票

代码不相同;在 Perl 代码中,

my
块内的
if
创建一个全新的变量,当包含块结束时,该变量将超出范围。

您可以使用 Python 中的上下文管理器执行类似的操作,但语法会有很大不同。


1
投票

这是您要找的吗?

a = 5
b = 9

def my_func(a):
    if a == 5:        
        b = 'apple'
        print("inside function: ", b)

my_func(a)
print("outside function: ", b)

> inside function: apple
> outside function: 9

b
是函数
my_func
内部的局部变量,等于
apple
,不影响等于
b
的全局变量
9

© www.soinside.com 2019 - 2024. All rights reserved.