Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialViraj Deshaval
4,874 PointsCorrection required in the video
Craig Dennis I believe the 'del' example showed in the video is little miguided.
What del does here is as below:
books = [
"Learning Python: Powerful Object-Oriented Programming - Mark Lutz",
"Automate the Boring Stuff with Python: Practical Programming for Total Beginners - Al Sweigart",
"Python for Data Analysis - Wes McKinney",
"Fluent Python: Clear, Concise, and Effective Programming - Luciano Ramalho",
"Python for Kids: A Playful Introduction To Programming - Jason R. Briggs",
"Hello Web App: Learn How to Build a Web App - Tracy Osborn",
]
>>> book1 = books[0]
>>> book1
'Learning Python: Powerful Object-Oriented Programming - Mark Lutz'
This is not like string literal 'Learning Python: Powerful Object-Oriented Programming - Mark Lutz' have two labels i.e. books[0] and book1 this is like there are two string literal in memory pointing to two different labels i.e.
books[0] = 'Learning Python: Powerful Object-Oriented Programming - Mark Lutz'
and book1 = 'Learning Python: Powerful Object-Oriented Programming - Mark Lutz'
We can think of like two same cube of cheese in a cheese shop i.e. cheese 1 with label 1 and cheese 2 with label 2.
so now let's say when we delete the 'del books[0]' it will remove the first item from the list but not the other one because those are two separate things. I believe this needs to be corrected in the video. Please correct me if I am wrong.
1 Answer
Steven Parker
231,275 PointsIn this case, both variables reference the same string. You can demonstrate this using the identity operator, "is":
>>> book1 = books[0]
>>> book1 is books[0] # same object?
True
>>> book2 = "Learning Python: Powerful Object-Oriented Programming - Mark Lutz"
>>> book2 == books[0] # same value?
True
>>> book2 is books[0] # same object?
False
Note that your example creates a new variable that the identity operator confirms is a reference to the same string literal. But if we create another variable using a new string literal (that happens to have the same exact contents), the identity operator shows that they are not the same.
So "book[0]" and "book1" are two labels for the same cube of cheese, but "book2" is a different cheese.
Viraj Deshaval
4,874 PointsViraj Deshaval
4,874 PointsHi Steve, Yes that's correct so if you see the video you will come to know what I am talking about here and why. I believe this needs some correction.
Steven Parker
231,275 PointsSteven Parker
231,275 PointsYou didn't provide a link to the video, so perhaps I misunderstood which point was yours.
Viraj Deshaval
4,874 PointsViraj Deshaval
4,874 PointsSorry Steve my bad. Link to the Video that teaches you about deletion is as below: https://teamtreehouse.com/library/deletion
Steven Parker
231,275 PointsSteven Parker
231,275 PointsThe video seems to be consistent with what we have been discussing here. In the video, Craig says, "So I'm going to say
carne_asada = craigs_lunch
and we'll see thatcarne_asada
now also points to that same taco."Then he goes on to demonstrate how deleting the label doesn't affect the underlying object as long as other labels still exist.
This all seems very much like the examples of "book[0]" and "book1" here. I don't see any errors in the video.