zoukankan      html  css  js  c++  java
  • 【Python123】OptionParser初使用

    分析项目的deploy.py实例来学习。

    1. OptionParser

    片段:

    def init_arg_parser():
        parser = OptionParser("operation with shark")
        parser.add_option("-o", "--operation",
                          help="target <operation> to be perform [precheck,checkconfig,sethcpkey,setuvakey,install,uninstall,checkinstall]", )
    
        parser.add_option("-e", "--environment", help="target <environment> to be installed, like 'pro', 'dr', 'dev'...")
        parser.add_option("-m", "--module", help="target module to be installed,[bin, conf]")
        parser.add_option("-v", "--version", help="the target version to be installed")
        parser.add_option("-r", "--release", help="the release number of the RPM package", default="1")
        parser.add_option("-i", "--base_directory", help="the path of base directory for installation", default="/apps")
        parser.add_option("-a", "--artifactory", help="nexus or artifactory", default="artifactory")
        parser.add_option("-b", "--buildnumber", help="build number", default="1")
        parser.add_option("-p", "--rpm_db", help="rpm db path")
    
        parser.add_option("-s", "--source_pkg_path",
                          help="the full path of local package to be installed, or will download from remote by script")
    
        parser.add_option("-D", "--debug", help="debug mode", action="store_true")
        (options, args) = parser.parse_args()
        return options

    参考:

    https://blog.csdn.net/lwnylslwnyls/article/details/8199454

    2. lambda

    片段:

    ...
    
        env = lambda: args.environment if args.environment 
            else _raise_attribute_error("[-e/--environment] is required for operation: %s" % args.operation)
    
        version = lambda: args.version if args.version 
            else _raise_attribute_error("[-v/--version] is required for operation: %s" % args.operation)
    
        # shark-bin/shark-conf
        pkg_name = lambda: '%s-%s' % (DEFAULT_APP_NAME, args.module) if args.module 
            else _raise_attribute_error("[-m/--module] is required for operation: %s" % args.operation)
            
        rpm_db = lambda: args.rpm_db if args.rpm_db 
            else '%s/%s/' % (args.base_directory, RPM_DB)
        
        artifactory = lambda: args.artifactory if args.artifactory 
            else _raise_attribute_error("[-a/--artifactory] is required for operation: %s" % args.operation)
            
        buildnumber = lambda: args.buildnumber if args.buildnumber 
            else _raise_attribute_error("[-a/--buildnumber] is required for operation: %s" % args.operation)
    ...

    lambda作为一个表达式,定义了一个全局匿名函数。

    lambda的使用大量简化了代码,使代码简练清晰。但这会在一定程度上降低代码的可读性。

    lambda存在意义就是对简单函数的简洁表示。

    参考:

    https://www.cnblogs.com/caizhao/p/7905094.html

  • 相关阅读:
    数据类型补充
    Kubernetes1.18.5 Cilium安装
    Cilium安装要求
    CentOS内核升级
    临时存储 Ephemeral Storage
    Pod优先级
    kubelet 垃圾回收策略
    Kubernetes Eviction驱逐
    根据PID查看具体的容器
    Kubernetes 资源预留(二)
  • 原文地址:https://www.cnblogs.com/cathygx/p/12022679.html
Copyright © 2011-2022 走看看