semi colonic
avi.e.gross at gmail.com
avi.e.gross at gmail.com
Wed Feb 22 22:42:10 EST 2023
That seems like a reasonable if limited use of a semi-colon, Thomas.
Of course, most shells will allow a multi-line argument too like some AWK
scripts I have written with a quote on the first line followed by multiple
lines of properly formatted code and a closing quote.
Python though can get touchy about getting just the right amount of
indentation and simple attempts to break your program up into two lines
python -c "import sys
print('\n'.join(sys.path))"
DO not work so well on some shells.
So, yes, I agree. But I tried this on bash under Cygwin on windows using a
"here" document and it worked fine with multiple lines so something to
consider with no semicolons:
$ python <<!
> import sys
> print('\n'.join(sys.path))
> !
/usr/lib/python2.7/site-packages/pylint-1.3.1-py2.7.egg
/usr/lib/python2.7/site-packages/astroid-1.3.4-py2.7.egg
/usr/lib/python2.7/site-packages/six-1.9.0-py2.7.egg
/usr/lib/python27.zip
/usr/lib/python2.7
/usr/lib/python2.7/plat-cygwin
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/lib/python2.7/site-packages
/usr/lib/python2.7/site-packages/gtk-2.0
-----Original Message-----
From: Python-list <python-list-bounces+avi.e.gross=gmail.com at python.org> On
Behalf Of Thomas Passin
Sent: Wednesday, February 22, 2023 9:05 PM
To: python-list at python.org
Subject: Re: semi colonic
On 2/22/2023 7:58 PM, avi.e.gross at gmail.com wrote:
> Thomas,
>
> This is one of many little twists I see between languages where one
> feature impacts use or even the need for another feature.
>
> So can anyone point to places in Python where a semicolon is part of a
> best or even good way to do anything?
Mostly I use it to run small commands on the command line with python -c.
e.g.
python -c "import sys;print('\n'.join(sys.path))"
This is handy enough that I wouldn't like to do without.
Another place I use the semicolon (once in a while) is for quick debugging.
I might add as line like, perhaps,
import os; print(os.path.exists(filename))
This way I can get rid of the debugging statement by deleting that single
line. This is non only quicker but I'm less likely to delete too much by
mistake.
> Some older languages had simple parsers/compilers that needed some way
> to know when a conceptual line of code was DONE and the semi-colon was
> a choice for making that clear. But some languages seem to only
> continue looking past an end-of-line if they detect some serious
> reason to assume you are in middle of something. An unmatched open
> parenthesis or square bracket might be enough, and in some languages a
curly brace.
>
> Python mainly has a concept of indentation and blank lines as one part
> of the guidance. Continuing lines is possible, if done carefully.
>
> But consider the lowly comma. Some languages may assume more is to
> come if it is dangled at the end of a line. But in a language that
> supports a dangling comma such as in making a tuple, how is the
> interpreter to know more is to come?
>
>>>> a = 5,
>>>> a
> (5,)
>
>>>> a = 5, \
> ... 6
>>>> a
> (5, 6)
>
> Well, one possible use of a semi-colon is to make short one-liner
> functions like this:
>
> def twoByFour(a): sq = a*a; forth = sq*sq; return((sq, forth))
>
> There is no reason, of course, that could not be done in multiple
> indented lines or other ways.
>
> So if it was allowed in something like a lambda creation, it could be
> useful but it isn't!
>
> About the only thing that I can think of is if someone wishes to
> compress a file of python code a bit. The indentation can add up but a
> semi-colon does not solve all such problems.
>
> Would anything serious break if it was deprecated for use as a
> statement terminator? Then again, is it hurting anything? If it
> stopped being used this way, could it later be introduced as some new
> language feature or operator such as we now have a := b as a reuse of
> the colon, maybe a semicolon could be useful at least until someone
> decides to allow additional Unicode characters!
>
> Now if there are serious reasons to use semi-colon in python, great.
> If not, it is a historical artifact.
>
> -----Original Message-----
> From: Python-list
> <python-list-bounces+avi.e.gross=gmail.com at python.org> On Behalf Of
> Thomas Passin
> Sent: Wednesday, February 22, 2023 7:24 PM
> To: python-list at python.org
> Subject: Re: Introspecting the variable bound to a function argument
>
> On 2/22/2023 3:12 PM, Hen Hanna wrote:
>> On Wednesday, February 22, 2023 at 2:32:57 AM UTC-8, Anton Shepelev
wrote:
>>> Hello, all.
>>>
>>> Does Python have an instrospection facility that can determine to
>>> which outer variable a function argument is bound, e.g.:
>>>
>>> v1 = 5;
>>> v2 = 5;
>>
>>
>> do some Python coders like to end lines with ; ?
>
> Very few, probably. It's not harmful but adds unnecessary visual clutter.
>
>>>
>>> def f(a):
>>> print(black_magic(a)) # or
> black_magic('a')
>>>
>>> f(v1) # prints: v1
>>> f(v2) # prints: v2
>>>
>>
>> the term [call by name] suggests this should be possible.
>>
>>
>> 30 years ago... i used to think about this type of thing A LOT ---
>> ------- CBR, CBV, CBN, (call by value), (call by
name)....
> etc.
>>
>
> --
> https://mail.python.org/mailman/listinfo/python-list
>
--
https://mail.python.org/mailman/listinfo/python-list
More information about the Python-list
mailing list