ipython变量扩展如何工作?

时间:2013-05-29 15:42:02

标签: ipython variable-expansion

我不明白${}在第四和第六个提示中正在做什么,我找不到任何关于此的文档,书Python for Unix and Linux System Administrator有一个例子,就像第六个提示符,其中变量不仅在$前面,而且还包含在{}中,以便将字符串嵌入到另一个变量中,如果我引用完整的表达式,它会发生,但是发生了什么[4& 6]:

In [1]: test = 'TEST TEST TEST!!!'                                                                                          

In [2]: !echo test
test                                                                                                                         

In [3]: !echo $test                                                                                                         
TEST TEST TEST!!!                                                                                                            

In [4]: !echo ${test}   # Don't understand this one.                                                                                                
TEST TEST!!!  

In [5]: !echo {test}                                                                                                       
TEST TEST TEST!!!

In [6]: !echo ${test}TEST!!!   # Nor this one either.
TEST TEST!!!TEST!!!

In [7]: !echo '${test}TEST!!!'
$TEST TEST TEST!!!TEST!!!

1 个答案:

答案 0 :(得分:4)

在[4]中,错字,)而不是},否则我会猜测,当${test}{test}被用于TEST TEST TEST时,导致$TEST TEST TEST,然后$TEST再次消耗(我认为在shell中)。

我这样说是因为:

In [1]: test = 'PATH TEST TEST!!!'

In [2]: !echo "${test}"
/usr/local/bin:/usr/local/share/pyt.../.rvm/bin TEST TEST!!!

但是你必须要小心,IPython会自己进行变量扩展,$foo{foo}(没有美元符号)扩展到foo的 Python 值。其中Shell经常使用$FOO${FOO}(美元与支架)。

在IPython中,当使用!时,你必须使用双元$$来显式运行。不知道怎么逃避Brackets。