• 【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

  • 相关阅读:
    一步一步学Remoting之四:承载方式(2)<转>
    一步一步学Remoting之五:异步操作<转>
    NET3.0+中使软件发出声音[整理篇]<转>
    Ext Core手册
    一步一步学Remoting之一:从简单开始<转>
    asp.net 常用字符串过滤方法 <转>
    mssql性能优化<转>
    一步一步学Remoting之四:承载方式(1)<转>
    Javascript中最常用的61个经典技巧 <转>
    Js事件对象<转>
  • 原文地址:https://www.cnblogs.com/cathygx/p/12022679.html
Copyright © 2020-2023  润新知