• python3(二十) module


    # 在Python中,一个.py文件就称之为一个模块(Module)
    # 1.最大的好处是大大提高了代码的可维护性。
    # 2.可以被其他地方引用
    # 3.python内置的模块和来自第三方的模块
    # 4.使用模块还可以避免函数名和变量名冲突
    # 5.同样,Python也有包(Package),同名不同包引用是也不会冲突。
    
    # 每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是我们定义的包名。
    # 类 似这种结构
    # mypackage
    #  ├─ web
    #  │  ├─ __init__.py
    #  │  ├─ utils.py
    #  │  └─ www.py
    #  ├─ __init__.py
    #  ├─ abc.py
    #  └─ utils.py
    
    # 自己创建模块时要注意命名,不能和Python自带的模块名称冲突。例如,系统自带了sys模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块。
    # ----------------------------------------------------------------------
    # sys模块为例写一个hello 模块
    # !/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    ' a test module '  # 模块的文档注释
    __author__ = 'shaozhiqi'  # 把作者写进去
    
    import sys  # 导入sys模块
    
    
    def test():
        args = sys.argv  # argv变量,用list存储了命令行的所有参数
        # argv至少有一个元素,因为第一个参数永远是该.py文件的名称
        if len(args) == 1:
            print('Hello, world!', args[0])
        elif len(args) == 2:
            print('Hello, %s!' % args[1])
        else:
            print('Too many arguments!')
    
    
    if __name__ == '__main__':  # 把一个特殊变量__name__置为__main__
        test()
    
    
    # 上面两行的作用 :
    # 当 .py 文件被直接运行时,if __name__ == '__main__' 之下的代码块将被运行;
    # 当 .py 文件以模块形式被导入时,if __name__ == '__main__' 之下的代码块不会被运行。
    # 场景:就是在当作为引入模块时我们会用文件名.test调用方法,当然不需要执行这两行。
    # 执行此py文件: Hello, world! D:/workPython/pythonLearning/pyc/codeModule20.py
    # ---------------------------------------------------------------------------------
    # 作用域
    # 1.类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,
    # 比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;
    # 2.普通的定义入: abc,x123,PI 是public的
    # 3._xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;
    # Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。
    # private的用法类似java,对内公开、对外隐藏。
    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)
  • 相关阅读:
    电商杂谈我对于各类平台的看法及八卦杂谈
    echo的实现
    Autofac依赖注入
    asp.net中获取系统信息
    openlayers 地图事件
    C# Finalize和Dispose的区别
    NET中MSMQ的使用附例子
    图像处理之相似图片识别
    openlayers图片样式替换
    WPF触发器
  • 原文地址:https://www.cnblogs.com/shaozhiqi/p/11543694.html
Copyright © 2020-2023  润新知