Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #48865

Re: Default Value

Newsgroups comp.lang.python
Date 2013-06-21 08:17 -0700
References (3 earlier) <2e92b4c7-31be-40d2-a906-ab19f3630dfa@googlegroups.com> <09cfa648-ab87-4261-b8f0-bf493de00553@4g2000pbf.googlegroups.com> <CAPTjJmr4Ny-0yKptf+_6QKrKoa67j1UsfYsJ_SqaPbYZqA6mQQ@mail.gmail.com> <CALwzid=ZK+a3++izA7=DmWcciYeKn7a55DQBUVBVmsW_LRDqWA@mail.gmail.com> <mailman.3662.1371812413.3114.python-list@python.org>
Message-ID <68185404-406e-48da-b00c-1ef99f8cf7ab@googlegroups.com> (permalink)
Subject Re: Default Value
From Rick Johnson <rantingrickjohnson@gmail.com>

Show all headers | View raw


On Thursday, June 20, 2013 5:28:06 PM UTC-5, Lefavor, Matthew (GSFC-582.0)[MICROTEL LLC] wrote:
> 
> [snip example showing dummy coder doing something dumb]
>
> +1. This is what convinces me that keeping references to
> keyword arguments is actually the right thing to do.
> 
> Perhaps I'm biased because I'm used to the mutable-
> argument behavior by now, but the gotcha described above
> seems to be much harder to track down and understand than
> any bugs caused by mutable arguments. With mutable
> arguments, at least you know the cause is in the function
> definition. If you initialized variables each time, you'd
> have to track the problem down across the entire
> namespace.

That's because you and many other folks, who keep supporting
this BS idea, have become SO accustomed to writing code in a
sloppy manner, that you need this flaw to save yourself,
FROM YOURSELF!

 " Hello, allow myself to introduce myself"

Apparently you don't understand the value of writing rock
solid code. Instead of passing your mutables in as
arguments, all you have to do is reference them properly in
the BODY of the subroutine and everything will work just
fine. If you fear global level variables then write up a
simple Object definition to encapsulate the mutable and make
it callable.

============================================================
 Thought Exercise:
============================================================

Let's imagine for a second if Python allowed mutable keys in
a dictionary, would you be surprised if you used a mutable
for a key, then you mutated the mutable key, then you could
not access the value from the original key? 

 ## Imaginary code ##
 py> lst = [3]
 py> d = {1:2, lst:4}
 py> lst.append(10)
 py> d[lst]
 opps, KeyError!

Would you REALLY be so surprised? I would not. But more
importantly, does Python need to protect you from being such
an idiot? I don't think so!

Any "intelligent" programmer would NEVER use mutable keys
for a hash table -- unless he had a very good reason and was
willing to take the risks -- EVEN IF the language allowed
such foolishness!

But you people will sit here all day arguing that "early
binding" is warranted on the grounds that people need to be
protected from doing stupid things -- like passing mutables
as arguments to subroutines. This is a weak argument. Tell
me you have something better, tell me the fate of this 
language does not revolve around benevolent idiocy!

If you really want to save the poor idiot from writing code
that could fail, a leader ruled by benevolence, but who has
a modicum of intelligence remaining, would simply throw up a
warning.

  Warning: 
    Argument "lst" to function "poopoo" has been mutated, 
    which could cause a subtle bug on successive calls. 
    YOU HAVE BEEN WARNED!

What you never, EVER, want to do is to use idiots for an
excuse to create some esoteric abomination of persistent
mutables between successive calls of subroutines. 

> I, for one, would much rather follow the rule "don't use
> mutable arguments in function definitions"

Yes, that's the exact point i'm making! A little self
discipline can go a long way

> than "don't ever re-use the name of your variables."

Well, we're not even talking about that, but i understand
the value of your statement. Although, i think your
comparing Apples and Oranges.

PS: First you support the opposition. now you go an do a
180? You're confusing the hell out of me Matthew! @_@

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Default Value Ahmed Abdulshafy <abdulshafy@gmail.com> - 2013-06-19 12:17 -0700
  Re: Default Value Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2013-06-19 22:35 +0300
  Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-19 12:38 -0700
    Re: Default Value rusi <rustompmody@gmail.com> - 2013-06-20 05:57 -0700
      Re: Default Value Roy Smith <roy@panix.com> - 2013-06-20 09:19 -0400
        Re: Default Value rusi <rustompmody@gmail.com> - 2013-06-20 06:31 -0700
        Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-21 00:17 +0000
          Re: Default Value Roy Smith <roy@panix.com> - 2013-06-20 20:25 -0400
      Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-20 07:49 -0700
        Re: Default Value Chris Angelico <rosuav@gmail.com> - 2013-06-21 01:38 +1000
          Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-20 11:05 -0700
            Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-21 00:57 +0000
              Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-20 20:16 -0700
                Re: Default Value Chris Angelico <rosuav@gmail.com> - 2013-06-21 17:10 +1000
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 07:32 -0700
                Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-21 16:22 +0000
            Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-21 15:57 +0000
              Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 10:01 -0700
                Re: Default Value Rotwang <sg552@hotmail.co.uk> - 2013-06-21 18:47 +0100
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 11:26 -0700
                Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-21 18:37 +0000
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 12:18 -0700
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 12:35 -0700
                Re: Default Value Chris Angelico <rosuav@gmail.com> - 2013-06-22 05:07 +1000
                Re: Default Value Neil Cerutti <neilc@norwich.edu> - 2013-06-21 19:20 +0000
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 13:27 -0700
                Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-22 01:31 +0000
                Re: Default Value Chris Angelico <rosuav@gmail.com> - 2013-06-22 11:40 +1000
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 18:42 -0700
                Re: Default Value MRAB <python@mrabarnett.plus.com> - 2013-06-22 03:04 +0100
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 19:32 -0700
                Re: Default Value MRAB <python@mrabarnett.plus.com> - 2013-06-22 20:36 +0100
                Re: Default Value Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-06-22 18:51 -0400
                Re: Default Value rusi <rustompmody@gmail.com> - 2013-06-21 19:43 -0700
                Re: Default Value Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-06-22 09:26 +0100
                Re: Default Value MRAB <python@mrabarnett.plus.com> - 2013-06-21 20:25 +0100
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 13:44 -0700
                Re: Default Value MRAB <python@mrabarnett.plus.com> - 2013-06-21 23:49 +0100
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 16:51 -0700
                Re: Default Value MRAB <python@mrabarnett.plus.com> - 2013-06-22 02:54 +0100
                Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-22 01:15 +0000
                Re: Default Value Ian Kelly <ian.g.kelly@gmail.com> - 2013-06-21 19:27 -0600
                Re: Default Value rusi <rustompmody@gmail.com> - 2013-06-21 19:32 -0700
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 19:55 -0700
                Re: Default Value rusi <rustompmody@gmail.com> - 2013-06-21 23:23 -0700
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-22 08:07 -0700
                Re: Default Value rusi <rustompmody@gmail.com> - 2013-06-22 08:31 -0700
                Re: Default Value rusi <rustompmody@gmail.com> - 2013-06-22 09:11 -0700
                Re: Default Value Grant Edwards <invalid@invalid.invalid> - 2013-06-24 14:22 +0000
                Re: [SPAM] Re: Default Value MRAB <python@mrabarnett.plus.com> - 2013-06-24 16:22 +0100
                Re: Default Value Chris Angelico <rosuav@gmail.com> - 2013-06-22 11:41 +1000
                Re: Default Value Michael Torrie <torriem@gmail.com> - 2013-06-21 20:46 -0600
                Re: Default Value Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2013-06-22 16:40 +0200
                Re: Default Value Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-06-22 12:49 -0400
                Re: Default Value Ian Kelly <ian.g.kelly@gmail.com> - 2013-06-22 12:57 -0600
                Re: Default Value Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-06-22 18:48 -0400
                Re: Default Value Rotwang <sg552@hotmail.co.uk> - 2013-06-22 00:40 +0100
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 18:15 -0700
                Re: Default Value Chris Angelico <rosuav@gmail.com> - 2013-06-22 11:37 +1000
                Re: Default Value Ian Kelly <ian.g.kelly@gmail.com> - 2013-06-21 19:42 -0600
                Re: Default Value Ian Kelly <ian.g.kelly@gmail.com> - 2013-06-21 19:38 -0600
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 19:40 -0700
                Re: Default Value Rotwang <sg552@hotmail.co.uk> - 2013-06-22 03:01 +0100
                Re: Default Value Chris Angelico <rosuav@gmail.com> - 2013-06-22 12:18 +1000
                Re: Default Value Rotwang <sg552@hotmail.co.uk> - 2013-06-22 03:25 +0100
                Re: Default Value Rotwang <sg552@hotmail.co.uk> - 2013-06-22 18:19 +0100
                Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-22 11:49 -0700
                Re: Default Value Rotwang <sg552@hotmail.co.uk> - 2013-06-23 01:49 +0100
        Re: Default Value rusi <rustompmody@gmail.com> - 2013-06-20 10:12 -0700
          Re: Default Value Chris Angelico <rosuav@gmail.com> - 2013-06-21 03:19 +1000
            Re: Default Value rusi <rustompmody@gmail.com> - 2013-06-20 10:30 -0700
          Re: Default Value Ian Kelly <ian.g.kelly@gmail.com> - 2013-06-20 11:57 -0600
            Re: Default Value rusi <rustompmody@gmail.com> - 2013-06-20 11:15 -0700
            Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-21 01:08 +0000
              Re: Default Value Tim Chase <python.list@tim.thechases.com> - 2013-06-20 20:26 -0500
                Re: Default Value Roy Smith <roy@panix.com> - 2013-06-20 21:40 -0400
                Re: Default Value Tim Chase <python.list@tim.thechases.com> - 2013-06-20 21:02 -0500
          Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-20 11:07 -0700
            Re: Default Value alex23 <wuwei23@gmail.com> - 2013-06-21 10:55 +1000
          Re: Default Value 88888 Dihedral <dihedral88888@gmail.com> - 2013-06-20 19:18 -0700
          Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-21 02:26 +0000
          Re: Default Value "Lefavor, Matthew (GSFC-582.0)[MICROTEL LLC]" <matthew.lefavor@nasa.gov> - 2013-06-20 17:28 -0500
            Re: Default Value Rick Johnson <rantingrickjohnson@gmail.com> - 2013-06-21 08:17 -0700
        Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-21 01:28 +0000
  Re: Default Value Gary Herron <gherron@digipen.edu> - 2013-06-19 12:57 -0700
  Re: Default Value Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-20 01:17 +0000

csiph-web