范例:

# file: say.py

import sys

txt = sys.argv[1]

print "Hello %s!"%(txt)

1

2

3

4

importsys

txt=sys.argv[1]

print"Hello %s!"%(txt)

那么我就可以在Linux或Mac的终端上直接输入:

python say.py World

输出结果就会是:

Hello World!

这样就确保了,在终端调用上的直观与可编程性。

这样,我就不用必须在别的python语言里面调用python了,而能够直接在shell上跟其它处理程序直接连接。

接着

file: say2.py

import sys

for line in sys.stdin.readlines():

print "Hello %s!"%(line.strip())

1

2

3

4

importsys

forlineinsys.stdin.readlines():

print"Hello %s!"%(line.strip())

那么我就可以在终端这么干:echo -e 'water\nmaomaol\nkenbing\nlonger\nchuang'|python say3.py

输出就会是:

Hello water!

Hello maomaol!

Hello kenbing!

Hello longer!

Hello chuang!

1

2

3

4

5

6

Hellowater!

Hellomaomaol!

Hellokenbing!

Hellolonger!

Hellochuang!

再进一步,我可以把前面的内容写成文件,比如写成一个这样的文件:

names.txt

water

maomaol

kenbing

longer

chuang

1

2

3

4

5

6

water

maomaol

kenbing

longer

chuang

就可以直接更便捷地做处理:

cat names.txt | python say2.py这样,我就用cat命令把文本打印出来,然后输出到say2.py上去了。

输出一样的结果。

cat names.txt | python say2.py > result.txt

就这样,结果就保存到了result.txt这个文件里了。

意义:

在终端上我可以随意地组合他和其它程序,作为一个中间处理模块。

而且,他可以如此地简单便捷,一些简单的脚本只需要cat一下马上就能明白是什么意思。

一个表达式一行代码,代码块有一致的标准的缩进,标准的命名方式,简练的语言,支持注释……

别的程序要访问或调用,很简单,一个命令把指定数据输入到这里就好,然后要怎么拼接怎么拼接;

周期性地处理也没问题,输出到文件,等待别的程序调用。

系统脚本上:

比SHELL多了很多数学及字符串处理能力,还多了很多很好用的迭代方法,还多了很多的原生的数据结构;

比PERL多了很要命的代码可读性。

比起ruby和nodejs,他基本所有机器都预装,而且已经经历了时间的考验。虽然,将来的确会有被这俩货代替的可能性。

比起C/C++,他多了一个终端、甚至像ipython这样的加强版神器终端,可以边调试代码边把没问题的代码写进文件。而且,源码即可执行。