Default Value

MRAB python at mrabarnett.plus.com
Sat Jun 22 15:36:30 EDT 2013


On 22/06/2013 03:32, Rick Johnson wrote:
> On Friday, June 21, 2013 8:54:50 PM UTC-5, MRAB wrote:
>> On 22/06/2013 00:51, Rick Johnson wrote:
>> > On Friday, June 21, 2013 5:49:51 PM UTC-5, MRAB wrote:
>> > My argument has always been that mutables should not be
>> > passed into subroutines as default arguments because bad
>> > things can happen. [...] I also believe that a programmer
>> > should not be prevented from passing mutable default
>> > arguments [...]
>> So, having mutables as default arguments is a bad idea,
>> but a programmer should not be prevented from doing that,
>> and a warning message should be printed on such occasions.
>
> Well i'll admit that does sound like a contradiction.
> Basically i meant, programmers should be *discouraged* from
> passing mutables as default arguments but not *prevented*.
> Of course, utilizing a stateless subroutine like i suggest,
> argument mutability would not matter.
>
> Sometimes when you're passionate about something your
> explanations become so verbose as to render your idea lost
> in the noise. Obviously i made that mistake here :)
>
Yes, a more measured explanation tends to work better. :-)

> In my last reply to Rotwang i explained the functionality i
> seek to achieve in a set of three interactive examples.
> Take a look at those and let me know what you think.
>
Hmm. Like they say, "The devil's in the details". As with the
mutability thing, I need to think about it some more. Sometimes it
seems straight-forward, until you try to do it! :-)

>> > Why should i help the developers of this language. What have
>> > they done for me?
>>
>> They've developed this language, and provided it for free.
>> They've even released the source code. You perceive flaws
>> that you say must be fixed, but you're not going to help
>> to fix them.
>
> Agreed. And i am thankful for everyone's contributions. I
> can be a bit harsh sometimes but my intention has always
> been to improve Python.
>
>> I _do_ want you to help to improve the language, and I
>> don't care if you don't get it right first time. I didn't
>> get it right first time when I worked on the regex module
>> (I think that what I have on PyPI is my _third_ attempt!).
>
> Well thanks for admitting you are not perfect. I know i am
> not. We all had to start somewhere and anyone who believes
> he knows everything is most assuredly a fool. Learning is
> a perpetual process, same for software evolution.
>
>> > You want to gain my respect? Then start engaging in honest
>> > debates. Start admitting that yes, somethings about Python
>> > are not only undesirable, they're just plain wrong.
>> Python isn't perfect, but then no language is perfect.
>> There will always be compromises, and the need to maintain
>> backwards compatibility means that we're stuck with some
>> "mis-features", but I think it's still worth using; I
>> still much prefer it to other languages.
>
> I understand. We can't break backwards compatibility for
> everything, even breaking it for some large flaws could
> cause a fatal abandonment of the language by long time
> users.
>
> I just don't understand why i get so much hostility when i
> present the flaws for discussion. Part of my intention is to
> air the flaw, both for new users and old users, but a larger
> intention is to discover the validity of my, or others,
> possible solutions.
>
The problem is in _how_ you do it, namely, very confrontationally.
You call yourself "RantingRick". People don't like ranting!

Instead of saying "This is obviously a flaw, and you're a fool if you
don't agree", you should say "IMHO, this is a flaw, and this is how I
think it could be fixed". Then, if someone points out a problem in your
suggested fix, you can say "OK, I see your point, I'll try to see
whether I can think of a way around that". Etc.

> And even if that solution involves a fork, that is not a bad
> thing. Creating a new fork and then garnering an acceptance
> of the new spinoff would lead to at worse, a waste of time
> and a huge learning experience, or at best, an evolution of
> the language.
>
>> > Stop calling me a troll when i am not. And not just me, stop
>> > calling other people trolls too! Stop using the personal
>> > attacks and straw man arguments.
>
> Sorry. I failed to explain that this statement was meant not
> directly for you but as a general statement to all members.
> Sometimes i feel like my back is against the wall and i'm
> fighting several foes at once. That can lead to me getting
> defensive.
>




More information about the Python-list mailing list