小编Ric*_*rdo的帖子

为什么eval不能找到外部函数中定义的变量?

我知道使用eval()通常意味着错误的代码,但我偶然发现了eval()函数在我无法理解的内部函数中的奇怪行为.如果我们写:

def f(a):
    def g():
        print(eval('a'))
    return g()
Run Code Online (Sandbox Code Playgroud)

f(1)在这种情况下运行会产生一个NameError声称a未定义的声明.但是,如果我们定义

def f(a):
    def g():
        b = a + 1
        print(eval('a'))
    return g()
Run Code Online (Sandbox Code Playgroud)

然后运行f(1)打印1.

本地和全局变量发生了一些我无法理解的事情.是a只在一个局部变量g(),当它被"拿来主义"的东西?这里发生了什么?

python eval local-variables

14
推荐指数
1
解决办法
602
查看次数

Pandas奇怪的行为使用.replace()来交换值

replace在使用Pandas 函数交换列的两个值时,我偶然发现了Pandas 函数的奇怪且不一致的行为.当我用它来交换列中的整数时

df = pd.DataFrame({'A': [0, 1]})
df.A.replace({0: 1, 1: 0})
Run Code Online (Sandbox Code Playgroud)

这产生了结果:

df
A
1
0
Run Code Online (Sandbox Code Playgroud)

但是,对字符串值使用相同的命令时

df = pd.DataFrame({'B': ['a', 'b']})
df.B.replace({'a': 'b', 'b': 'a'})
Run Code Online (Sandbox Code Playgroud)

我们得到了

df
B
'a'
'a'
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释我这种行为上的差异,或者指向我在文档中的一个页面,它处理在熊猫中使用整数和字符串时的不一致性?

python string replace dataframe pandas

8
推荐指数
1
解决办法
216
查看次数

标签 统计

python ×2

dataframe ×1

eval ×1

local-variables ×1

pandas ×1

replace ×1

string ×1