Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。
我们以内建的 #!/usr/bin/env python # -*- coding: utf-8 -*- ' a test module ' __author__ = 'Michael Liao' import sys def test(): args = sys.argv if len(args)==1: print 'Hello, world!' elif len(args)==2: print 'Hello, %s!' % args[1] else: print 'Too many arguments!' if __name__=='__main__': test()
第1行和第2行是标准注释,第1行注释可以让这个 第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;
第6行使用 以上就是Python模块的标准文件模板,当然也可以全部删掉不写,但是,按标准办事肯定没错。 后面开始就是真正的代码部分。
你可能注意到了,使用 import sys
导入
运行
运行 最后,注意到这两行代码: if __name__=='__main__': test()
当我们在命令行运行
我们可以用命令行运行 $ python hello.py Hello, world! $ python hello.py Michael Hello, Michael!
如果启动Python交互环境,再导入 $ python Python 2.7.5 (default, Aug 25 2013, 00:04:04) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import hello >>>
导入时,没有打印
调用 >>> hello.test() Hello, world!
别名
导入模块时,还可以使用别名,这样,可以在运行时根据当前环境选择最合适的模块。比如Python标准库一般会提供 try: import cStringIO as StringIO except ImportError: # 导入失败会捕获到ImportError import StringIO
这样就可以优先导入
还有类似 try: import json # python >= 2.6 except ImportError: import simplejson as json # python <= 2.5
由于Python是动态语言,函数签名一致接口就一样,因此,无论导入哪个模块后续代码都能正常工作。 作用域
在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过
正常的函数和变量名是公开的(public),可以被直接引用,比如:
类似
类似 之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。 private函数或变量不应该被别人引用,那它们有什么用呢?请看例子: def _private_1(name): return 'Hello, %s' % name def _private_2(name): return 'Hi, %s' % name def greeting(name): if len(name) > 3: return _private_1(name) else: return _private_2(name)
我们在模块里公开 外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。 转载请保留固定链接: https://linuxeye.com/program/2360.html |