python文件的整体结构,如下:
#!/usr/bin/env python (1)起始行
“this is a stack module” (2)模块文档
import sys (3)模块导入
import os
debug = Ture (4)(全局)变量定义
class FooClass (object):
"Foo class" (5)类定义(若有)
pass
def test(): (6)函数定义(若有)
"test function"
foo=FooClass()
if __name__ =='__main__': (7)主程序
test()
(1) 起始行
通常只有在类unix环境下才使用起始行,由起始行就能够仅输入脚本名字来执行脚本,无需直接调用解释器。
(2)模块文档
此处你可以自己简单描述一下该模块的功能(可写可不写,主要是别人看到你的程序时可以第一时间明白你该模块的功能)
(3) 模块导入
导入当前模块的代码需要的所有模块;每个模块仅导入一次;函数内部的模块代码不会被执行,除非该函数正在执行
(4) 变量定义
这里定义的变量为全局变量,本模块的所有函数都可以直接用。
(5) 类定义语句
所有的类都需要在这里定义
(6) 函数定义语句
(7) 主程序
无论这个模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码。如果模块是被导入,__name__的值为模块名字;如果模块是被直接执行,__name__的值为‘__main__’
下面这个例子:进栈出栈
#!/usr/bin/env python
“this is a stack module”
stack = []
def pushit():
stack.append(raw_input('enter new string: ').strip())
def popit():
if len(stack) == 0:
print 'cannot pop from an empty stack'
else:
print 'removed [',`stack.pop()`,']'
def viewstack():
print stack
CMDs={'u':pushit,'o':popit,'v':viewstack}
def showmenu():
print """
p(U)sh
p(O)p
(V)iewstack
(Q)uit
Enter choice:"""
while True:
while True:
try:
choice = raw_input().strip()[0].lower()
except(EOFError,KeyboardInterrupt,IndexError):
choice = 'q'
print '\n You picked:[%s]'%choice
if choice not in 'uovq':
print 'Invalid option,try angin'
else:
break
if choice =='q':
break
CMDs[choice]()
if __name__ =='__main__': //程序从这开始执行
showmenu()