2017-03-03 8 views
1

は、次の簡単な例を考えてみましょうスイッチ

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の追加機能を使用していればOKです。

備考:このような場合は、pgf/tikz構文の後に "cd"というキーワードを使用しました。

+1

パスカルの 'with'キーワードのように聞こえます。私は、大規模なハッキングがなければ、Pythonで可能なことはないと思います。すべてのPythonはあまりにも多くの文脈なしで各行を表現力豊かに保つよう努力しています。あなたのアプローチとまったく逆の方法での「自己」の説明を考えてみましょう。 C/C++の同じ質問については、http://stackoverflow.com/questions/2279180/does-c-have-with-keyword-like-pascalも参照してください。 – Alfe

答えて

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ステートメントを有効にすることを検討してください。これにより、エラーが発生する(qxにあるため)か、グローバル変数qのために3が出力されるはずですか?これは決めるのが難しく、さまざまな人々が異なる意見を持つことができるので、Pythonはこの機能を全く持たないことに決めました。