Multiple optional arguments python

后端 未结 2 387
余生分开走
余生分开走 2021-01-04 22:58

So I have a function with several optional arguments like so:

def func1(arg1, arg2, optarg1=None, optarg2=None, optarg3=None):

Optarg1 &

相关标签:
2条回答
  • 2021-01-04 23:47

    **kwargs is used to let Python functions take an arbitrary number of keyword arguments and then ** unpacks a dictionary of keyword arguments. Learn More here

    def print_keyword_args(**kwargs):
        # kwargs is a dict of the keyword args passed to the function
        print kwargs
        if("optarg1" in kwargs and "optarg2" in kwargs):
            print "Who needs optarg3!"
            print kwargs['optarg1'], kwargs['optarg2']
        if("optarg3" in kwargs):
            print "Who needs optarg1, optarg2!!"
            print kwargs['optarg3']
    
    print_keyword_args(optarg1="John", optarg2="Doe")
    # {'optarg1': 'John', 'optarg2': 'Doe'}
    # Who needs optarg3!
    # John Doe
    print_keyword_args(optarg3="Maxwell")
    # {'optarg3': 'Maxwell'}
    # Who needs optarg1, optarg2!!
    # Maxwell
    print_keyword_args(optarg1="John", optarg3="Duh!")
    # {'optarg1': 'John', 'optarg3': 'Duh!'}
    # Who needs optarg1, optarg2!!
    # Duh!
    
    0 讨论(0)
  • 2021-01-05 00:00

    If you assign them in the call of the function you can pre-empt which parameter you are passing in.

    def foo( a, b=None, c=None):
        print("{},{},{}".format(a,b,c))
    
    >>> foo(4) 
    4,None,None
    >>> foo(4,c=5)
    4,None,5
    
    0 讨论(0)
提交回复
热议问题