How does python 3 print (list, list.pop ())?

For print () with a few arguments, I thought that it evaluates them one by one. However the following code

a = [1, 2, 3, 4]
print(a, a[:], a.pop(), a, a[:])

prints

[1, 2, 3] [1, 2, 3, 4] 4 [1, 2, 3] [1, 2, 3]

I thought python would evaluate first a, then a[:], then a.pop(), then aand a[:]that would print

[1, 2, 3, 4] [1, 2, 3, 4] 4 [1, 2, 3] [1, 2, 3]

So how exactly does this work?

+4
source share
1 answer

If you call a function (any function). Arguments are first evaluated from left to right . So your code is equivalent:

arg1 = a
arg2 = a[:]
arg3 = a.pop()
arg4 = a[:]
print(arg1,arg2,arg3,arg4)

(of course, variables arg1, arg2etc. do not exist at the Python level)

arg1 , a, a arg2, a, arg3, , , ( a ) arg4.

, , :

arg1 = a         # arg1 = a = [1,2,3,4]
arg2 = a[:]      # arg2 = [1,2,3,4]
arg3 = a.pop()   # arg1 = a = [1,2,3], arg3 = 4
arg4 = a[:]      # arg4 = [1,2,3]
print(arg1,arg2,arg3,arg4)

print(..) , , , . :

[1, 2, 3] [1, 2, 3, 4] 4 [1, 2, 3]

, a.pop() , a, arg1, ( ). , arg1 a - , .

+5

Source: https://habr.com/ru/post/1681717/


All Articles