implement partial-like module in python











up vote
0
down vote

favorite












I want to implement a piece of code that are equivalent to each other:



from inspect import getfullargspec
from functools import partial

def incomplete(func):
global inputs
global func_args
func_args = len(getfullargspec(func)[0])
def wrapper(*args):
global inputs
global func_args
if len(args) < func_args:
partial(func, args)
else:
return func(*args)
return wrapper

@incomplete
def add(a, b):
return a + b

add1 = add(1)

assert add1(2) == add(1, 2)


My problem is that I should return a function in first if statement, but the function is incomplete, what changes should be applied to the below code to have them equivalent?



from inspect import getfullargspec
from functools import partial

def incomplete(func):
global inputs
global func_args
inputs =
func_args = len(getfullargspec(func)[0])
def wrapper(*args):
global inputs
global func_args
if len(inputs) < func_args:
inputs += args
else:
return func(*args)
return wrapper

@incomplete
def add(a, b):
return a + b

add1 = add(1)

assert add1(2) == add(1, 2)









share|improve this question
























  • Are you asking how to implement partial?
    – mkrieger1
    Nov 18 at 12:11










  • @mkrieger1 somehow! My goal is to how can I alter the second code that works like the first one!
    – Mostafa Ghadimi
    Nov 18 at 12:14










  • The documentation for partial even gives a possible implementation: docs.python.org/3/library/functools.html#functools.partial
    – mkrieger1
    Nov 18 at 12:15










  • @mkrieger1 thank you, I have implemented it in other way :)
    – Mostafa Ghadimi
    Nov 19 at 14:25















up vote
0
down vote

favorite












I want to implement a piece of code that are equivalent to each other:



from inspect import getfullargspec
from functools import partial

def incomplete(func):
global inputs
global func_args
func_args = len(getfullargspec(func)[0])
def wrapper(*args):
global inputs
global func_args
if len(args) < func_args:
partial(func, args)
else:
return func(*args)
return wrapper

@incomplete
def add(a, b):
return a + b

add1 = add(1)

assert add1(2) == add(1, 2)


My problem is that I should return a function in first if statement, but the function is incomplete, what changes should be applied to the below code to have them equivalent?



from inspect import getfullargspec
from functools import partial

def incomplete(func):
global inputs
global func_args
inputs =
func_args = len(getfullargspec(func)[0])
def wrapper(*args):
global inputs
global func_args
if len(inputs) < func_args:
inputs += args
else:
return func(*args)
return wrapper

@incomplete
def add(a, b):
return a + b

add1 = add(1)

assert add1(2) == add(1, 2)









share|improve this question
























  • Are you asking how to implement partial?
    – mkrieger1
    Nov 18 at 12:11










  • @mkrieger1 somehow! My goal is to how can I alter the second code that works like the first one!
    – Mostafa Ghadimi
    Nov 18 at 12:14










  • The documentation for partial even gives a possible implementation: docs.python.org/3/library/functools.html#functools.partial
    – mkrieger1
    Nov 18 at 12:15










  • @mkrieger1 thank you, I have implemented it in other way :)
    – Mostafa Ghadimi
    Nov 19 at 14:25













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I want to implement a piece of code that are equivalent to each other:



from inspect import getfullargspec
from functools import partial

def incomplete(func):
global inputs
global func_args
func_args = len(getfullargspec(func)[0])
def wrapper(*args):
global inputs
global func_args
if len(args) < func_args:
partial(func, args)
else:
return func(*args)
return wrapper

@incomplete
def add(a, b):
return a + b

add1 = add(1)

assert add1(2) == add(1, 2)


My problem is that I should return a function in first if statement, but the function is incomplete, what changes should be applied to the below code to have them equivalent?



from inspect import getfullargspec
from functools import partial

def incomplete(func):
global inputs
global func_args
inputs =
func_args = len(getfullargspec(func)[0])
def wrapper(*args):
global inputs
global func_args
if len(inputs) < func_args:
inputs += args
else:
return func(*args)
return wrapper

@incomplete
def add(a, b):
return a + b

add1 = add(1)

assert add1(2) == add(1, 2)









share|improve this question















I want to implement a piece of code that are equivalent to each other:



from inspect import getfullargspec
from functools import partial

def incomplete(func):
global inputs
global func_args
func_args = len(getfullargspec(func)[0])
def wrapper(*args):
global inputs
global func_args
if len(args) < func_args:
partial(func, args)
else:
return func(*args)
return wrapper

@incomplete
def add(a, b):
return a + b

add1 = add(1)

assert add1(2) == add(1, 2)


My problem is that I should return a function in first if statement, but the function is incomplete, what changes should be applied to the below code to have them equivalent?



from inspect import getfullargspec
from functools import partial

def incomplete(func):
global inputs
global func_args
inputs =
func_args = len(getfullargspec(func)[0])
def wrapper(*args):
global inputs
global func_args
if len(inputs) < func_args:
inputs += args
else:
return func(*args)
return wrapper

@incomplete
def add(a, b):
return a + b

add1 = add(1)

assert add1(2) == add(1, 2)






python decorator partial






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 18 at 12:05

























asked Nov 18 at 11:59









Mostafa Ghadimi

169216




169216












  • Are you asking how to implement partial?
    – mkrieger1
    Nov 18 at 12:11










  • @mkrieger1 somehow! My goal is to how can I alter the second code that works like the first one!
    – Mostafa Ghadimi
    Nov 18 at 12:14










  • The documentation for partial even gives a possible implementation: docs.python.org/3/library/functools.html#functools.partial
    – mkrieger1
    Nov 18 at 12:15










  • @mkrieger1 thank you, I have implemented it in other way :)
    – Mostafa Ghadimi
    Nov 19 at 14:25


















  • Are you asking how to implement partial?
    – mkrieger1
    Nov 18 at 12:11










  • @mkrieger1 somehow! My goal is to how can I alter the second code that works like the first one!
    – Mostafa Ghadimi
    Nov 18 at 12:14










  • The documentation for partial even gives a possible implementation: docs.python.org/3/library/functools.html#functools.partial
    – mkrieger1
    Nov 18 at 12:15










  • @mkrieger1 thank you, I have implemented it in other way :)
    – Mostafa Ghadimi
    Nov 19 at 14:25
















Are you asking how to implement partial?
– mkrieger1
Nov 18 at 12:11




Are you asking how to implement partial?
– mkrieger1
Nov 18 at 12:11












@mkrieger1 somehow! My goal is to how can I alter the second code that works like the first one!
– Mostafa Ghadimi
Nov 18 at 12:14




@mkrieger1 somehow! My goal is to how can I alter the second code that works like the first one!
– Mostafa Ghadimi
Nov 18 at 12:14












The documentation for partial even gives a possible implementation: docs.python.org/3/library/functools.html#functools.partial
– mkrieger1
Nov 18 at 12:15




The documentation for partial even gives a possible implementation: docs.python.org/3/library/functools.html#functools.partial
– mkrieger1
Nov 18 at 12:15












@mkrieger1 thank you, I have implemented it in other way :)
– Mostafa Ghadimi
Nov 19 at 14:25




@mkrieger1 thank you, I have implemented it in other way :)
– Mostafa Ghadimi
Nov 19 at 14:25












1 Answer
1






active

oldest

votes

















up vote
0
down vote













from inspect import getfullargspec

def incomplete(func):
global inputs
global func_args
inputs =
func_args = len(getfullargspec(func)[0])
def wrapper(*args):
global inputs
global func_args
inputs += args
if len(inputs) < func_args:
def partial(*argss):
for i in argss:
inputs.append(i)
if (len(inputs) == func_args):
return func(*inputs)
else:
return partial
return partial
else:
return func(*args)
return wrapper

@incomplete
def add(a, b):
return a + b

add1 = add(1)

assert add1(2) == add(1, 2)





share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














     

    draft saved


    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53360626%2fimplement-partial-like-module-in-python%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    from inspect import getfullargspec

    def incomplete(func):
    global inputs
    global func_args
    inputs =
    func_args = len(getfullargspec(func)[0])
    def wrapper(*args):
    global inputs
    global func_args
    inputs += args
    if len(inputs) < func_args:
    def partial(*argss):
    for i in argss:
    inputs.append(i)
    if (len(inputs) == func_args):
    return func(*inputs)
    else:
    return partial
    return partial
    else:
    return func(*args)
    return wrapper

    @incomplete
    def add(a, b):
    return a + b

    add1 = add(1)

    assert add1(2) == add(1, 2)





    share|improve this answer

























      up vote
      0
      down vote













      from inspect import getfullargspec

      def incomplete(func):
      global inputs
      global func_args
      inputs =
      func_args = len(getfullargspec(func)[0])
      def wrapper(*args):
      global inputs
      global func_args
      inputs += args
      if len(inputs) < func_args:
      def partial(*argss):
      for i in argss:
      inputs.append(i)
      if (len(inputs) == func_args):
      return func(*inputs)
      else:
      return partial
      return partial
      else:
      return func(*args)
      return wrapper

      @incomplete
      def add(a, b):
      return a + b

      add1 = add(1)

      assert add1(2) == add(1, 2)





      share|improve this answer























        up vote
        0
        down vote










        up vote
        0
        down vote









        from inspect import getfullargspec

        def incomplete(func):
        global inputs
        global func_args
        inputs =
        func_args = len(getfullargspec(func)[0])
        def wrapper(*args):
        global inputs
        global func_args
        inputs += args
        if len(inputs) < func_args:
        def partial(*argss):
        for i in argss:
        inputs.append(i)
        if (len(inputs) == func_args):
        return func(*inputs)
        else:
        return partial
        return partial
        else:
        return func(*args)
        return wrapper

        @incomplete
        def add(a, b):
        return a + b

        add1 = add(1)

        assert add1(2) == add(1, 2)





        share|improve this answer












        from inspect import getfullargspec

        def incomplete(func):
        global inputs
        global func_args
        inputs =
        func_args = len(getfullargspec(func)[0])
        def wrapper(*args):
        global inputs
        global func_args
        inputs += args
        if len(inputs) < func_args:
        def partial(*argss):
        for i in argss:
        inputs.append(i)
        if (len(inputs) == func_args):
        return func(*inputs)
        else:
        return partial
        return partial
        else:
        return func(*args)
        return wrapper

        @incomplete
        def add(a, b):
        return a + b

        add1 = add(1)

        assert add1(2) == add(1, 2)






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 18 at 13:12









        Mostafa Ghadimi

        169216




        169216






























             

            draft saved


            draft discarded



















































             


            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53360626%2fimplement-partial-like-module-in-python%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            If I really need a card on my start hand, how many mulligans make sense? [duplicate]

            Alcedinidae

            Can an atomic nucleus contain both particles and antiparticles? [duplicate]