osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Tutor] beginning to code


On Tue, 12 Sep 2017 20:01:52 -0700, Rick Johnson wrote:

> But just because we have been trained that the implicit `if x:` is
> shorthand for the reasonable `if bool(x) == True:`

That's not reasonable.

bool(x) already returns a True or False flag, comparing it to True is 
superfluous. (Regardless of whether you use `is` or a slower equality 
test.) It is excessively redundantly surplus.

And where do you stop? If you don't believe `bool(x)` is a flag, then you 
can't believe `bool(x) == True` either, leading you into an infinite 
regress of superfluous redundancy:

if (bool(x) == True) == True:

if ((bool(x) == True) == True) == True:

if (((bool(x) == True) == True) == True) == True:

if ((((bool(x) == True) == True) == True) == True) == True:

if (((((bool(x) == True) == True) == True) == True) == True) == True:
# help, I don't know how to stop!!!!


The *only* reasonable place to stop is right at the beginning:

if bool(x):

at least for languages like Pascal and Java where `if` requires a 
specific boolean type.

And assuming x is not already a bool. If it is a bool, you of course 
wouldn't redundantly call bool on it repeatedly again and again 
redundantly:

if bool(bool(bool(bool(bool( ... (x)))))))...)
# help, I don't know where to stop!!!


If x is already a flag, then it would be silly to waste time calling bool 
even once. You wouldn't write this:

a = int(25)
b = int(30)
c = int( (int(a) + int(b))*int(2) )
values = list([1, 2, 3])
x = list(values)[int(c)]


No, its quite obvious that anyone who would call bool() on something 
which is already a bool, let alone the even more excessively superfluous 
`if bool(x) is True`, is a cargo-cult programmer who isn't fluent enough 
in the Python language to know what they're doing.

And of course the beauty of duck-typing in Python is that *everything* is 
a bool, or at least quacks like a bool and swims like a bool.



[...]
> they're just reductio ad absurdum.

I see that your understanding of logical fallacies is as penetrating and 
profound as your understanding of Python's design.




-- 
Steven D'Aprano
?You are deluded if you think software engineers who can't write 
operating systems or applications without security holes, can write
virtualization layers without security holes.? ?Theo de Raadt