Dear Mr. Guido, Ok, I see. Thank you for your prompt reply.
Best regards, Huang Y.W Guido van Rossum <gu...@python.org> 于2019年8月27日周二 上午12:38写道: > Sorry, there is no way to leverage the implementation or syntax of := for > this purpose. You must be misunderstanding how they it works. > > You are right that the initial value of the variable at the call site is > irrelevant (but there must be some initial value, e.g. None, to be able to > identify the variable). > > Surely there are other ways to deal with the UX problem you indicate (e.g. > namedtuple). > > --Guido > > On Mon, Aug 26, 2019 at 8:33 AM HUANG YUWEI <lelouchk...@gmail.com> wrote: > >> Dear Mr. Guido and Mr. Spealman, >> >> Thanks for your quick reply. >> >> Yes, something like "Out Parameters in C#" is exactly what I mentioned. >> >> "calling by reference" is very close, except that >> - with "calling by reference", the object is initialized before the >> function is called, and then being passed to function and modified. >> - in my idea, the object is initialized (created) inside a function, and >> its pointer (or reference) is passed to a variable X as the initialization >> of variable X. >> The point is that, the returned value may not have fixed type or array >> shape due to the possible existence of "if condition" inside the function. >> On the other hand, "calling by reference" fixes these attributes of >> returned variable. >> >> And also you are right, this could be easily solved by returning a tuple >> of multiple values, and the users just pick the returned value they need. >> For low level function, the number of return variables may be 1 or 2; For >> high level function which comprises of multiple low level functions, the >> number of return variables could be many. Then it would look like >> ``` >> res0, res1, res2, res3, res4, res5, res6, res7, ..., resN = >> high_level_function() >> ``` >> or >> ``` >> results = high_level_function() >> res0 = results[0] >> res1 = results[1] >> ... >> ``` >> This hurts the readability of code sometimes. >> >> My idea is simply that, okay we are now able to have assign operator in >> large expression, then why not in a function calling statement. (if the >> implementation is not difficult ...) >> >> best regards, >> Huang Y.W >> >> Calvin Spealman <cspea...@redhat.com> 于2019年8月27日周二 上午12:00写道: >> >>> This also looks a lot like Out Parameters in C# ( >>> https://www.c-sharpcorner.com/article/out-parameter-in-c-sharp-7/) >>> >>> They have a similar dichotomy of declaration and call time semantics >>> using the `out` keyword rather than an assignment operator. >>> >>> On Mon, Aug 26, 2019 at 10:50 AM Guido van Rossum <gu...@python.org> >>> wrote: >>> >>>> I think you're talking about call-by-reference (Google it). >>>> >>>> What would be your use case? >>>> >>>> Do you know you can return multiple values from a function using a >>>> tuple? E.g. >>>> >>>> def foo(): >>>> return 3, 42 >>>> >>>> x, y = foo() >>>> print(x) # 3 >>>> print(y) # 42 >>>> >>>> --Guido >>>> >>>> On Mon, Aug 26, 2019 at 5:57 AM HUANG YUWEI <lelouchk...@gmail.com> >>>> wrote: >>>> >>>>> Dear Python community, >>>>> >>>>> I am a heavy python user in numerical simulation. >>>>> >>>>> In python 3.8, we will have a new syntax `:=` that could assign values >>>>> to variables as part of larger expression like, >>>>> >>>>> ``` >>>>> >>>>> if (n:=len(a)) > 10: >>>>> >>>>> .... >>>>> >>>>> ``` >>>>> >>>>> On the other hand, I also think that it would be useful if `:=` could >>>>> be used in function argument, so that a local variable created inside a >>>>> function could be returned **optionally**, for example, >>>>> >>>>> ``` >>>>> >>>>> def func(arg1, arg2, karg1=karg1_default, karg_return:=karg_return): >>>>> >>>>> ... >>>>> >>>>> karg_return = 3 >>>>> >>>>> ... >>>>> >>>>> return func_output >>>>> >>>>> >>>>> # normal calling of func() without returning variable karg_return >>>>> >>>>> # in this way, karg_return:=karg_return is not used and karg_return is >>>>> only simply a local variable in func() >>>>> >>>>> output = func(2,3,karg1=4) >>>>> >>>>> >>>>> # calling func() with using the karg_return argument >>>>> >>>>> # in this way, value of the local variable karg_return in func() is >>>>> created and "passed" to variable a >>>>> >>>>> output = func(2,3,karg1=4,a:=karg_return) >>>>> >>>>> print(a) # a = 3 >>>>> >>>>> ``` >>>>> >>>>> >>>>> Is it possible to add this new feature? >>>>> >>>>> >>>>> Thanks for your attention to this matter. >>>>> >>>>> Huang Y.W. >>>>> _______________________________________________ >>>>> Python-ideas mailing list -- python-ideas@python.org >>>>> To unsubscribe send an email to python-ideas-le...@python.org >>>>> https://mail.python.org/mailman3/lists/python-ideas.python.org/ >>>>> Message archived at >>>>> https://mail.python.org/archives/list/python-ideas@python.org/message/ZN5XM5MSHAAN4U3VBAEBXUJB4ZUN6SUP/ >>>>> Code of Conduct: http://python.org/psf/codeofconduct/ >>>>> >>>> >>>> >>>> -- >>>> --Guido van Rossum (python.org/~guido) >>>> *Pronouns: he/him/his **(why is my pronoun here?)* >>>> <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/> >>>> _______________________________________________ >>>> Python-ideas mailing list -- python-ideas@python.org >>>> To unsubscribe send an email to python-ideas-le...@python.org >>>> https://mail.python.org/mailman3/lists/python-ideas.python.org/ >>>> Message archived at >>>> https://mail.python.org/archives/list/python-ideas@python.org/message/RLHDDJ5CS77BWH6INCHPRR6UHEEHRGU4/ >>>> Code of Conduct: http://python.org/psf/codeofconduct/ >>>> >>> >>> >>> -- >>> >>> CALVIN SPEALMAN >>> >>> SENIOR QUALITY ENGINEER >>> >>> cspea...@redhat.com M: +1.336.210.5107 >>> [image: https://red.ht/sig] <https://red.ht/sig> >>> TRIED. TESTED. TRUSTED. <https://redhat.com/trusted> >>> >> > > -- > --Guido van Rossum (python.org/~guido) > *Pronouns: he/him/his **(why is my pronoun here?)* > <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/> >
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/5XIKCF77IH43S6PUZLKEGH6F7VISDF2X/ Code of Conduct: http://python.org/psf/codeofconduct/