在本地切换到对象的命名空间

时间:2017-03-03 10:47:39

标签: python pandas syntax ipython

考虑以下简单示例:

import pandas as pd
mytable = pd.read_csv('test.dat',sep='\t')
mytable["z"] = mytable.x + mytable.y
mytable["q"] = mytable.z**2
mytable

例如cat test.dat

x       y
1       5
2       6
3       7
4       8

如果我使用ipython3之类的内容,我希望"因素排除"此伪代码中的mytable关键字:

import pandas as pd
mytable = pd.read_csv('test.dat',sep='\t')
cd mytable
   z = x + y
   q = z**2
mytable

是否有可能简化这样的语法。如果解决方案使用额外的ipython功能,那也没关系。

备注:我使用了" cd"关键字遵循pgf / tikz语法,这样的事情是可能的。

1 个答案:

答案 0 :(得分:1)

Python的设计并不能真正实现这一点,因为它会导致含糊不清。有关该主题的详细讨论,请参阅here

考虑这样的代码:

class X(object):
  def __init__(self, q):
    self.q = q

x = X(4)
q = 3

# del x.q

with x:
  print q

这应该打印4,我假设。

现在,考虑启用del语句。这应该会引发错误(因为q中缺少x吗?)还是应该打印3(因为全局变量q更多)?由于这很难决定,不同的人可以有效地拥有不同的意见,因此Python决定不再使用此功能。