2012-01-27 125 views
1

我分析来自谷歌的回购脚本(指示在http://source.android.com/source/downloading.html帮助理解Python脚本

回购脚本是用Python编写的需要。书中有一个部分,上面写着:

if sys.argv[-1] =='#%s' % magic 

有人可以解释的语义是什么意思线?我对我的Python有点生疏。用于该代码的整个块是:

magic='--calling-python-from-/bin/sh--' 
"""exec" python -E "$0" "[email protected]" """#$magic" 
if __name__ == '__main__': 
    import sys 
    if sys.argv[-1] =='#%s' % magic: 
     del sys.argv[-1] 

回答

3

海贼王:

  • sys.argv持有传递给一个Python脚本命令行参数的清单。含义sys-argv[-1]是最后一个参数。
  • '#%s' % magic%格式化你的字符串,这意味着你看到的地方%s将会有magic的值(如果magic不是将被转换的字符串:str(magic))。在你的代码中,字符串将会是:'#--calling-python-from-/bin/sh--'
  • del sys.argv[-1]。这是自我解释性的:意味着列表sys.argv的最后一个值将被删除。

总之这意味着:如果最后的命令行参数是#--calling-python-from-/bin/sh--这样的说法将被从sys.argv删除。

1

它格式化魔术作为格式“#nnn”的字符串,其中n为magic转换为字符串,并使用命令行上传递的最后一个参数字符串进行比较(负面指数从最后列出了该列表)。如果找到,arg将从参数列表中删除。当时

+0

你是什么意思“幻数”?我在这个脚本中没有看到与数学有关的任何东西...... – 2012-01-30 19:54:06

+1

@Igor G,'$ magic'和'magic'的值。我可能应该将代码格式化为更清晰。它不一定是一个数字,我认为“数字”只是因为“魔术数字”和#符号的常见用法而误入其中。 – FatalError 2012-01-30 20:37:54