Python学习札记(二十九) 模块2

本文介绍了Python中如何使用sys模块处理命令行参数,并探讨了公共与私有作用域的概念,以及如何通过下划线前缀来区分不同访问级别的函数。

参考:使用模块

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值