[issue36223] Execution sequence for print function

2020-09-15 Thread Ketan Sharma


Change by Ketan Sharma :


--
nosy:  -iitkgp.ke...@gmail.com

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36223] Execution sequence for print function

2019-03-11 Thread Ketan Sharma


Ketan Sharma  added the comment:

Realized this is expected behavior. Slight modification to the existing 
comments:
Resolution happens in usual order for print(a, pola(a), a).

1) a -> is a reference to the array, resolved as is.
2) pola(a) -> changes the values pointed at by the reference a
3) a -> resolved as the new array values.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36223] Execution sequence for print function

2019-03-07 Thread Karthikeyan Singaravelan


Karthikeyan Singaravelan  added the comment:

Agreed with @remi.lapeyre. There is no delayed evaluation in Python and this is 
not only related to print but it's the general evaluation model in Python. 
Another example as below since foo(1) is used as an argument it's evaluated 
first and then the return value is passed.

def bar(a, b):
print("bar ", a, b)
return (a, b)

def foo(b):
print("foo ", b)
return b

bar(foo(1), 2) # foo is first evaluated to pass 1 bar


$ python3 /tmp/foo.py
foo  1
bar  1 2

Closing this as not a bug.

--
nosy: +xtreak
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36223] Execution sequence for print function

2019-03-07 Thread Rémi Lapeyre

Rémi Lapeyre  added the comment:

print does not execute statements, arguments are first resolved like with any 
function. Your code is equivalent to:

>>> def pola(arr):
... for i, item in enumerate(arr):
... arr[i] = item*item
... 
>>> a = [1,2,3,4]
>>> pola(a)
>>> print(a, None, a)
[1, 4, 9, 16] None [1, 4, 9, 16]

I would close this as not a bug.

--
nosy: +remi.lapeyre

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue36223] Execution sequence for print function

2019-03-07 Thread Ketan Sharma


New submission from Ketan Sharma :

>>> def pola(arr):
...   for i, item in enumerate(arr):
... arr[i] = item*item
...
>>> a = [1,2,3,4]
>>> print(a,pola(a),a)
[1, 4, 9, 16] None [1, 4, 9, 16]

I would expect the print statement to execute and print the arguments 
sequentially from left to right. This could be an optimization trick inside the 
Python compiler, but still different that what would be expected. Thanks.

--
messages: 337381
nosy: iitkgp.ke...@gmail.com
priority: normal
severity: normal
status: open
title: Execution sequence for print function
type: behavior

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com