参考:使用模块

NOTE

1.内建sys模块:

#!/usr/bin/env python3

import sys

'a test module'

__author__ = 'wasdns'

def main():
args = sys.argv
if len(args) == 1:
print('Hello')
elif len(args) == 2:
print('Hello, %s' % args[1])
else :
print('Your network has some problem.\n')
print('Please change your network environment') if __name__ == '__main__':
main()
sh-3.2# ./module1.py
Hello sh-3.2# ./module1.py wasdns
Hello, wasdns sh-3.2# ./module1.py wasdns me
Your network has some problem. Please change your network environment

第5行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释.

__author__变量把作者写进去.

2.args参数:

当执行:

./module1.py

时,args只有一个参数,参数0:

args[0] = 'module1.py'

args = ['module1.py']

执行:

./module1.py wasdns

时,args有两个参数,参数0和1:

args[0] = 'module1.py'

args[1] = 'wasdns'

args = ['module1.py', 'wasdns']

3.作用域:模块中函数和变量名的作用域。public与private。

在Python中,为避免模块中函数和变量名的冲突,通过_前缀来实现。

类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,一般不用这样子的命名规范。

类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等。

#!/usr/bin/env python3

import sys

def _func1(name):
print('Hello, %s' % name) def _func2(name):
# do no thing
return def main():
args = sys.argv if len(args) == 1:
print('Error: miss args')
elif len(args) == 2:
_func1(args[1])
else :
_func2(args[1]) if __name__ == '__main__':
main()
sh-3.2# ./module2.py
Error: miss args sh-3.2# ./module2.py wasdns
Hello, wasdns sh-3.2# ./module2.py wasdns hi
sh-3.2#

外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。

调用_func1和_func2函数无需关心其内部细节,这是一种非常有用的代码封装和抽象的方法。

2017/2/22

Python学习札记(二十九) 模块2的更多相关文章

  1. Python学习札记(二十八) 模块1

    参考:模块 NOTE 1.模块:一个.py文件称为一个模块. 2.代码模块化的意义:a.提升程序的可维护性 b.不用重复造轮子 3.避免模块冲突,解决方法:引入了按目录来组织模块的方法,称为包(Pac ...

  2. Python学习札记(二十五) 函数式编程6 匿名函数

    参考:匿名函数 NOTE 1.Python对匿名函数提供了有限的支持. eg. #!/usr/bin/env python3 def main(): lis = list(map(lambda x: ...

  3. Python学习札记(二十) 函数式编程1 介绍 高阶函数介绍

    参考: 函数式编程 高阶函数 Note A.函数式编程(Functional Programming)介绍 1.函数是Python内建支持的一种封装,我们通过一层一层的函数调用把复杂任务分解成简单的任 ...

  4. Python学习札记(三十九) 面向对象编程 Object Oriented Program 10

    参考:使用枚举类 NOTE #!/usr/bin/env python3 from enum import Enum def main(): Mouth = Enum('Mouth', ('Jan', ...

  5. Python学习札记(二十六) 函数式编程7 修饰器

    修饰器 NOTE 1.函数对象有一个__name__属性,可以拿到函数的名字: #!/usr/bin/env python3 def now(): print('2017/2/19') def mai ...

  6. Python学习札记(二十四) 函数式编程5 返回函数

    参考:返回函数 NOTE 1.高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. eg.求和函数 #!/usr/bin/env python3 def calsums(*args): a ...

  7. Python学习(二十九)—— pymysql操作数据库优化

    转载自:http://www.cnblogs.com/liwenzhou/articles/8283687.html 我们之前使用pymysql操作数据库的操作都是写死在视图函数中的,并且很多都是重复 ...

  8. Python学习札记(二十二) 函数式编程3 filter & SyntaxError: unexpected EOF while parsing

    参考: filter Problem SyntaxError: unexpected EOF while parsing 遇到该语法错误,一般是由于 括号不匹配 问题. Note 1.filter 用 ...

  9. Python学习日记(二十九) 网络编程

    早期的计算机通信需要有一个中间件,A要给B传东西,A必须要把信息传给中间件,B再把从中间件中拿到信息 由于不同机器之间需要通信就产生了网络 软件开发的架构 1.C/S架构 服务器-客户机,即Clien ...

随机推荐

  1. MySQL监控、性能分析——工具篇(转载)

    MySQL越来越被更多企业接受,随着企业发展,MySQL存储数据日益膨胀,MySQL的性能分析.监控预警.容量扩展议题越来越多.“工欲善其事,必先利其器”,那么我们如何在进行MySQL性能分析.监控预 ...

  2. Tomcat 启动出现警告问题Setting property 'minSpar eThreads' to '25' did not find a matching property

    tomcat启动报错: Jul 19, 2017 3:10:02 PM org.apache.catalina.startup.SetAllPropertiesRule beginWARNING: [ ...

  3. 【转载】细说 Form (表单)

    Form(表单)对于每个WEB开发人员来说,应该是再熟悉不过的东西了,可它却是页面与WEB服务器交互过程中最重要的信息来源. 虽然Asp.net WebForms框架为了帮助我们简化开发工作,做了很完 ...

  4. WebService 的简单使用

    简单介绍 WebService是一种跨语言,跨进程,跨机器的数据交互技术. SOAP:简单对象访问协议,通过XML数据交互的轻量级协议,WebService就是采用的这种协议 WSDL:web服务描述 ...

  5. 向Docx4j生成的word文档中添加布局--第二部分

    原文标题:Adding layout to your Docx4j-generated word documents, part 2 原文链接:http://blog.iprofs.nl/2012/1 ...

  6. Web开发者应知的URL编码知识(转)

    原文出处: lunatech   译文出处:oschina - 桔子, lwei, 史涛, Khiyuan, super0555, LinuxQueen, 抛出异常的爱 本文首先阐述了人们关于统一资源 ...

  7. mysql 数据操作 单表查询 使用正则表达式查询

    SELECT * FROM employee WHERE name REGEXP '^ale'; SELECT * FROM employee WHERE name REGEXP 'on$'; SEL ...

  8. PhotoSwipe中文API(三)

    http://photoswipe.com/documentation/api.html 所有的方法和这个网页上列出的属性是公开的.如果你想看看例子什么API可以做的,拿在默认PhotoSwipe U ...

  9. jsp内置对象与servlet的关系

      Servlet与JSP九大内置对象的关系 JSP对象 怎样获得 out->response.getWriter request ->Service方法中的req参数 response  ...

  10. marathon-lb-什么是服务发现?(转)

    摘要: 将容器应用部署到集群时,其服务地址,即IP和端口, 是由集群系统动态分配的.那么,当我们需要访问这个服务时,如何确定它的地址呢?这时,就需要服务发现(Service Discovery)了.本 ...