Hacker News new | ask | show | jobs
by ashtuchkin 428 days ago
python does this pretty elegantly:

    def my_func(a: int, b: int):
        print(a+b)

    # both of these can be used
    my_func(1, 2)
    my_func(a=1, b=2)
3 comments

Even better, python has named tuples [0]. So if you have a tuple that you are sure will always have the same inputs you can declare it:

``` Point = namedtuple('Point', 'x y') pt1 = Point(1.0, 5.0) ```

And then call the X or Y coordinates either by index: pt1[0], pt1[1], or coordinate name: pt1.x, pt1.y.

This can be a really handy way to help people understand your code as what you are calling becomes a lot more explicit.

[0] https://stackoverflow.com/questions/2970608/what-are-named-t...

This isn't what I'm talking about. I would want

    def my_func(a: int, b: int):
      ...

    def my_func2(args: my_func.__args_type__):
      ...
with `my_func.__args_type__` standing for an object like `{a: int, b: int}`.
Also `my_func(**{a:1, b:2})`