this post was submitted on 27 Jul 2024
28 points (96.7% liked)

Learn Programming

1616 readers
1 users here now

Posting Etiquette

  1. Ask the main part of your question in the title. This should be concise but informative.

  2. Provide everything up front. Don't make people fish for more details in the comments. Provide background information and examples.

  3. Be present for follow up questions. Don't ask for help and run away. Stick around to answer questions and provide more details.

  4. Ask about the problem you're trying to solve. Don't focus too much on debugging your exact solution, as you may be going down the wrong path. Include as much information as you can about what you ultimately are trying to achieve. See more on this here: https://xyproblem.info/

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 1 year ago
MODERATORS
 

Just started as in, I'm about an hour into a 4 hour intro video. Seeing two basic ways of manipulating things and don't understand the difference.

If I want to know the length of a string and I just guess at how to do it I would try one of these two things,

  1. Len(string)
  2. string.len()

What is the difference between these types of statements? How do I think about this to know which one I should expect to work?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 3 points 1 month ago* (last edited 1 month ago) (8 children)

len(string) passes the object 'string' to a function 'len' that returns its length.

sting.len() (edit: hypothetically if it existed) calls the method 'len' which is an inherent part of any object of string type.

In practice the result is the same, but the latter is the more object-oriented approach.

[–] [email protected] 1 points 1 month ago (5 children)

Follow up question. Are there any other ways I would find the length? Or are methods and functions the only options?

[–] [email protected] 3 points 1 month ago (3 children)

Are there any other ways I would find the length? Or are methods and functions the only options?

You could get creative and find several inferior, silly, and utterly insane ways of achieving the same result, for example by treating a string as an interable (read: "list" or "array") of its constituent characters, and count the number of characters. This feels very "example (but not exemplary) code on the first pages of a crappy C++ textbook", but hey, it's a way:

length = 0
string = "foobar"
for char in string:
  length = length + 1
print(length)

Mind you, this is not programming. This is toying around, and perfectly valid in that way, but no-one in a halfway sane state of mind would dare suggest doing it this way with Python if you actually care about the result. :)

[–] [email protected] 1 points 1 month ago* (last edited 1 month ago)

Clearly you meant:

string = "foobar"
length = 0
_ = [length += 1 for _ in string]
print(length)

Much more readable!

Edit: Damn, doesn't work, was hoping to make something cursed but you can't make an assignment during comprehension. Oh well, maybe Python 3.14!

load more comments (2 replies)
load more comments (3 replies)
load more comments (5 replies)