Re: if expression source format
Consider following snippets:
# must examine code carefully to see that result has a value
if condition:
result = expression1
else:
result = another_expression
return result
# result has a value but difficult to understand how it comes
about
result = expression1 if condition else another_expression
return result
# must examine code carefully to ensure that it always
# returns a computed value
if condition:
return true_expression
else:
return false_expression
# Ahh! I do use this idiom quite often.
if condition:
return true_expression
return default_expression
Actually, I was simply wondering if there is yet a preferred way to
write the python ternary expression. Samples:
# break expression near convenient max line length A)
true_expression if condition else (fa
lse_expression)
# break expression near convenient max line length B)
# ("Humans be damned!" form.)
true_expr \
ession if cond \
ition else \
false_e \
xpressi \
on
# ternary nature of expression extremely visible
(true_expression
if condition else
false_expression)
# I use this form but not happily,
# providing functions as necessary to make it fit onto two lines
# loosely guided by the K&R admonition (or maybe it was K&P) that
# "a conditional expression is too complicated if you can't read
# it to your mother over the phone" or something like that.
(true_expression if condition
else false_expression)
--
http://mail.python.org/mailman/listinfo/python-list
python 3, subclassing TextIOWrapper.
'''
A python 3 question.
Presume this code is in file p.py.
The program fails.
$ python3 p.py
...
ValueError: I/O operation on closed file.
Removing the comment character to increase the stream
reference count fixes the program, at the expense of
an extra TextIOWrapper object.
Please, what is a better way to write the class with
regard to this issue?
'''
import re
import io
class file(io.TextIOWrapper):
'''
Enhance TextIO. Streams have many sources,
a file name is insufficient.
'''
def __init__(self,stream):
#self.stream = stream
super().__init__(stream.buffer)
def seek_pattern(self,pattern):
'''
A motivational method, otherwise inconsequential to the
problem.
'''
search = re.compile(pattern).search
while True:
line = next(self)
if (not line) or search(line):
return line
print(file(open('p.py')).read())
--
http://mail.python.org/mailman/listinfo/python-list
Re: python 3, subclassing TextIOWrapper.
Return value of open undocumented? The return value of open() is a "stream", according to http://docs.python.org/dev/py3k/library/io.html#module-io Seems like time for a bug report. -- http://mail.python.org/mailman/listinfo/python-list
Re: python 3, subclassing TextIOWrapper.
For D. Murray's suggestion---I think that we programmers have to learn the idiom. We don't always control open, such as subprocess.Popen(). Thank you. I hope these thoughts help with issue 5513 and the related questions to follow about complete removal of file in python3. Opening the file in binary mode for text behavior was not obvious to me, but makes good sense now that you've explained the further nesting. -- http://mail.python.org/mailman/listinfo/python-list
