Socratica Python Programming Tutorials (Computer Science) - YouTube
Basics
Use dir() to look up what we can use on an object:
example = set()
dir(example)
#[... '_and_', '_class_', '_contains_', '_delattr_', '_dir_', '_doc_' ... 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update'...]Some data classes
- Lists - stores duplicates, mutable.
- Also,
collections.dequesimilar to a list but optimized for adding/removing from both ends.
my_list = [1, 2, 2, 3] print(my_list) # Output: [1, 2, 2, 3] - Also,
- Sets - don’t store duplicates, no order, mutable.
- Also, frozenset add immutability
my_frozenset = frozenset([1, 2, 2, 3])
- Also, frozenset add immutability
my_set = {1, 2, 2, 3}
print(my_set) # Output: {1, 2, 3}- Tuples - stores duplicates, immutable
- Also,
collections.namedtuple- Like a tuple, but with named fields for better readabilityPoint = namedtuple("Point", ["x", "y"])
- Also,
my_tuple = (1, 2, 2, 3)
print(my_tuple) # Output: (1, 2, 2, 3)- Dictionaries - stores duplicates, mutable, key/value.
- Also,
collections.defaultdict- provides a default value for missing keys.
- Also,
my_dict = {"a": 1, "b": 2, "a": 3}
print(my_dict) # Output: {'a': 3, 'b': 2}Variable scopes
When a variable is encountered, Python searches for it in the following order of scopes (LEGB):
- Local: defined within a function
- Enclosing: function inside a function.
- Global: outside of function or defined by keyword
global - Built-in: which contains all keywords, functions, exceptions and attributes, which are built-in.
/Attachments/Pasted-image-20250530004002.png)
Text and number formatting
x = float(input("what is x")) # 999
y = float(input("what is y")) # 1
z = round(x+y)
print(f"{z:,}") # Outputs: 1,000 formatted number
x = 2
y = 3
z = (x / y)
print(f"{z:.f2}") # Outputs: 0.67 formatted numberList Comprehension vs Generator Expression
Generator Expression (without brackets):
#The expression
domain.lower() in repo_field for domain in domainsList Comprehension (with brackets):
[domain.lower() in repo_field for domain in domains]So while they look similar, the one without the brackets is lazy evaluation and produces a generator rather than a full list (better memory efficiency since it generates values on demand)
Fibonacci Sequence in Python
Fibonacci sequence is a sequence in which each element is the sum of the two elements that precede it, starting from 0 and 1:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
Package management
pip (barebones)
What is Python’s site-packages directory? - Stack Overflow
python - What does pip install . (dot) mean? - Stack Overflow
UV (better than pip and else)
Combines package management, environment management and locking via uv lock and uv sync --lock
Lock file, what?
Tl;dr: uv sync would sync with pyproject.toml to install packages and create/relock uv.lock file. While uv sync --lock would make sure that if new package update/tree changed in pip repo it would preserve existing state, not installing updates.
UV has ability to record all package dependencies and versions into a lock file, making deployments consistent. For example, you developed locally and now pushing container image, you can instruct UV in docker file to import uv.lock too so that it’s identical.
What is no-install-project?:
`uv sync --no-install-project`The uv tool will do the following:
- Reads your
pyproject.toml(specifically the[project.dependencies]section) - Installs those dependencies directly using its own resolver and downloader, without calling
pip install . - It uses uv’s native Rust-based backend, which is faster and lower-level than pip
/Attachments/Pasted-image-20250530003132.png)
/Attachments/Pasted-image-20250530003146.png)
/Attachments/Pasted-image-20250530003215.png)