Ok, thanks. I think what I am aiming at is that there is a pool of suggestions and PEPs that are pointing towards very similar direction and I find myself often wandering in the same space, just trying to figure out what it exactly is.

It sometimes feels more verbose than it could be for what it is in the context of how simple python is to use in general.

I am fully well aware that current if-else expression is not going anywhere. Chances that another expression is introduced, which does exactly the same thing are close to none.

So I am just gauging if it is a matter of conciseness of existing expressions or absence of something that could be there. Conditional if-else is just a place where I got to naturally. 

Got some useful references to PEPs, python history and opinions. Maybe it will become more clear in the future or maybe something new is already being worked that is going to fill the gap which I am not aware of.

I haven’t even started any proposal myself, I was just following e-mail requests and rejected PEPs that were mentioned here. Combined it with my own experience and this is where I got to.

Currently seems like it’s a dead end. Decision’s have been made, opinions taken into account, but I still have to write either:

a) awkward 1-liner

self.value = value if value is not None else DefaultClass()
b) 3 nicely readable lines with 1 unnecessary assignment.

self.value = value
if value is None:
    self.value = DefaultClass()
c) 4 lines, no unnecessary assignments with excellent readability.

if value is None:
    self.value = DefaultClass()
    self.value = value

The issue with b) and c) is that if I use those ones, my constructors become unbearably long and finally lead to the point where development becomes awkward. I would think that for what it does, it shouldn’t be more than 1 line. Max - 2. But a) is somewhat awkward. All (well not all, just several things) taken into account I ended up at inconvenience of `ifelse` expression, which would make a) my natural choice in this case. I am not even suggesting to introduce analogous `ifelse` with different syntax, just trying to get some ideas, references, opinions or alternatives that I don’t know about.

Maybe I need to spend some time on it and some solution will come out using existing python’s functionality or an idea which actually has a chance of being considered.

How would you write this? Doesn’t the below feel more verbose than it could be? Add 10 more constructor argument and there are 50 lines of code that do pretty much nothing. Not very pythonic…? One-line conditionals aren’t very readable (to me! I am aware that some might not feel this way) and for longer variable names sometimes don’t even fit into 80 characters.

def __init__(self,
if arg1 is None:
    self.arg1 = DefaultClass()
    self.arg1 = arg1
if argument2 is None:
    self.argument2 = DefaultClass()
    self.argument2 = argument2
if arg3foo is None:
    self.arg3foo = DefaultClass()
    self.arg3foo = arg3foo

PEP505 would solve this nicely, but it only applies to None and would not apply to say user-defined sentinels and many other cases where permutations of different conditionals arise.

Just want to stress out, that I know that this is something very primitive and might seem insubstantial to consider, but to me personally, solution to this would make a very big difference. I have been stuck on many such decisions of best practice and I have found satisfactory solutions to seemingly much more complex `problems` and am fairly happy having found optimal ways to do many different things in python - makes life easy. But this one is of very few that still bother me to this day. And it does seem related to certain queries that arise here.

So just trying to see what others think, etc, etc

Ok, I have been repeating myself for a bit, but from certain responses it felt like I have failed to convey where I am coming from. Or maybe no-one else has issue here, so if I am actually alone that is so bothered about this, it as also good information.

On 18 Jul 2023, at 04:40, Greg Ewing <gcewing@snap.net.nz> wrote:

On 18/07/23 10:30 am, Dom Grigonis wrote:
Although, the argument that python is meant to be read as english is very much valid, but I do not see why it has to be an overarching one if the opportunity cost of it is too great in other dimensions.

It's not overarching. Many things in Python don't read like English,
and nobody is suggesting changing them to be more English-like.

I think you've got it backwards here. The fact that it reads like
English is just a possible explanation of why many people find it more
readable. The fact that people (well, just Guido at that time) find it
readable is the reason it was chosen, not beause it's English-like.


Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@python.org
Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/ZVVK5APG2MI53UZB5NARI3FQMMLJRKCF/
Code of Conduct: http://python.org/psf/codeofconduct/