this post was submitted on 20 Sep 2023
10 points (100.0% liked)

Python

6405 readers
21 users here now

Welcome to the Python community on the programming.dev Lemmy instance!

πŸ“… Events

PastNovember 2023

October 2023

July 2023

August 2023

September 2023

🐍 Python project:
πŸ’“ Python Community:
✨ Python Ecosystem:
🌌 Fediverse
Communities
Projects
Feeds

founded 1 year ago
MODERATORS
 

Constant modules are modules that often contains variables that you want to use in many places without relying on hard coded values. Sometime you store paths (often relatives).

Is it a good thing to use pathlib.Path() object is modules dedicated to constant?

Or is there anything that you should know before choosing to do so?

I would say the same question appears for using re.compile() in constants.

Any advise?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 1 year ago (2 children)

If it's a path, you should use Path. If it's a regular expression, define it as such with re.compile(). If the purpose of such a module is to reduce boilerplate, then defining these values as strings only necessitates boilerplate later on to convert them.

There's one edge case to consider, though it's very "edge". If you define a very long/complex regex as a constant and then import from that file, Python will run .compile() on import. If you're not actually using that regex though (say you imported the file to use a different value) then you're burning CPU there for no reason.

I generally don't recommend that you concern yourself with that sort of thing though until you run into real performance problems. Most regexes you compile take no time at all, and the benefit of storing everything as the object you'd expect has big benefits for developer cognitive load.

[–] [email protected] 2 points 1 year ago

Thanks a lot for the detailed answer.

[–] [email protected] 1 points 1 year ago

@danielquinn agreed! You can work around the performance issues by wrapping it in a function.