added standard lib doc
This commit is contained in:
266
Docs/Basic/09-standard-libs.md
Normal file
266
Docs/Basic/09-standard-libs.md
Normal file
@@ -0,0 +1,266 @@
|
||||
# 09 – Python Standard Library
|
||||
|
||||
This document introduces some of the most commonly used **Python standard library** modules:
|
||||
|
||||
* `datetime`
|
||||
* `math`
|
||||
* `random`
|
||||
* `decimal`
|
||||
|
||||
These modules come bundled with Python and require no external installation.
|
||||
|
||||
---
|
||||
|
||||
## 1. Date and Time with `datetime`
|
||||
|
||||
The `datetime` module provides classes for working with dates and times.
|
||||
|
||||
---
|
||||
|
||||
### Working with Dates
|
||||
|
||||
#### Code
|
||||
|
||||
```python
|
||||
import datetime
|
||||
|
||||
date_1 = datetime.date(2026, 1, 1)
|
||||
|
||||
print(date_1.year)
|
||||
print(date_1.month)
|
||||
print(date_1.day)
|
||||
|
||||
print(date_1.weekday)
|
||||
print(date_1.ctime)
|
||||
```
|
||||
|
||||
#### Explanation
|
||||
|
||||
* `datetime.date(year, month, day)` creates a date object.
|
||||
* `.year`, `.month`, `.day` access individual components.
|
||||
|
||||
#### Important Note
|
||||
|
||||
```python
|
||||
date_1.weekday()
|
||||
```
|
||||
|
||||
* Returns the day of the week as an integer:
|
||||
|
||||
* Monday = 0
|
||||
* Sunday = 6
|
||||
|
||||
```python
|
||||
date_1.ctime()
|
||||
```
|
||||
|
||||
* Returns a human-readable string representation of the date.
|
||||
|
||||
---
|
||||
|
||||
### Working with Time
|
||||
|
||||
#### Code
|
||||
|
||||
```python
|
||||
time_1 = datetime.time(12, 12)
|
||||
|
||||
print(time_1.hour)
|
||||
print(time_1.min)
|
||||
```
|
||||
|
||||
#### Explanation
|
||||
|
||||
* `datetime.time(hour, minute)` creates a time object.
|
||||
* `.hour` returns the hour.
|
||||
* `.minute` returns the minute.
|
||||
|
||||
---
|
||||
|
||||
### Working with Date and Time Together
|
||||
|
||||
#### Code
|
||||
|
||||
```python
|
||||
abbas_birth = datetime.datetime(2026, 1, 1, 12, 12)
|
||||
today = datetime.date.today()
|
||||
now = datetime.datetime.now()
|
||||
|
||||
diff_time = now - abbas_birth
|
||||
```
|
||||
|
||||
#### Explanation
|
||||
|
||||
* `datetime.datetime` includes both date and time.
|
||||
* `date.today()` returns today’s date.
|
||||
* `datetime.now()` returns the current date and time.
|
||||
* Subtracting two `datetime` objects returns a `timedelta`.
|
||||
|
||||
---
|
||||
|
||||
## 2. Mathematical Operations with `math`
|
||||
|
||||
The `math` module provides advanced mathematical functions and constants.
|
||||
|
||||
---
|
||||
|
||||
### Mathematical Constants
|
||||
|
||||
```python
|
||||
import math
|
||||
|
||||
print(math.pi)
|
||||
print(math.e)
|
||||
print(math.inf)
|
||||
```
|
||||
|
||||
* `math.pi`: π constant
|
||||
* `math.e`: Euler’s number
|
||||
* `math.inf`: infinity
|
||||
|
||||
---
|
||||
|
||||
### Power and Rounding
|
||||
|
||||
```python
|
||||
print(math.pow(2, 3))
|
||||
|
||||
print(round(4.2))
|
||||
print(round(4.8))
|
||||
```
|
||||
|
||||
* `math.pow(a, b)` returns `a` raised to the power of `b`.
|
||||
* `round()` rounds to the nearest integer.
|
||||
|
||||
---
|
||||
|
||||
### Floor and Ceil
|
||||
|
||||
```python
|
||||
print(math.floor(4.2))
|
||||
print(math.floor(4.9))
|
||||
|
||||
print(math.ceil(4.2))
|
||||
print(math.ceil(4.9))
|
||||
```
|
||||
|
||||
* `floor`: rounds down
|
||||
* `ceil`: rounds up
|
||||
|
||||
---
|
||||
|
||||
### Logarithms
|
||||
|
||||
```python
|
||||
print(math.log(100, 10))
|
||||
```
|
||||
|
||||
* Returns the logarithm of 100 with base 10.
|
||||
|
||||
---
|
||||
|
||||
## 3. Random Values with `random`
|
||||
|
||||
The `random` module is used to generate pseudo-random values.
|
||||
|
||||
---
|
||||
|
||||
### Random Numbers
|
||||
|
||||
```python
|
||||
import random
|
||||
|
||||
print(random.randint(1, 6))
|
||||
print(random.random())
|
||||
```
|
||||
|
||||
* `randint(a, b)`: random integer between `a` and `b` (inclusive)
|
||||
* `random()`: random float between `0` and `1`
|
||||
|
||||
---
|
||||
|
||||
### Random Selection
|
||||
|
||||
```python
|
||||
number_list = list(range(15))
|
||||
print(random.choice(number_list))
|
||||
|
||||
char_list = ['a', 'm', 's']
|
||||
print(random.choice(char_list))
|
||||
```
|
||||
|
||||
* `choice()` selects a random element from a sequence.
|
||||
|
||||
---
|
||||
|
||||
### Shuffling
|
||||
|
||||
```python
|
||||
random.shuffle(number_list)
|
||||
print(number_list)
|
||||
```
|
||||
|
||||
* `shuffle()` randomly rearranges the list in place.
|
||||
|
||||
---
|
||||
|
||||
## 4. Decimal Precision with `decimal`
|
||||
|
||||
The `decimal` module provides precise decimal arithmetic, avoiding floating-point errors.
|
||||
|
||||
---
|
||||
|
||||
### Decimal Context
|
||||
|
||||
```python
|
||||
import decimal
|
||||
|
||||
print(decimal.getcontext())
|
||||
```
|
||||
|
||||
* Shows current precision and rounding settings.
|
||||
|
||||
---
|
||||
|
||||
### Float vs Decimal
|
||||
|
||||
```python
|
||||
print(decimal.Decimal(0.1))
|
||||
print(decimal.Decimal('0.1'))
|
||||
```
|
||||
|
||||
* Passing a float carries floating-point error.
|
||||
* Passing a string preserves exact value.
|
||||
|
||||
---
|
||||
|
||||
### Precision Comparison
|
||||
|
||||
```python
|
||||
print(0.1 + 0.2 == 0.3)
|
||||
```
|
||||
|
||||
Returns `False` due to floating-point precision issues.
|
||||
|
||||
```python
|
||||
print(decimal.Decimal(0.1) + decimal.Decimal(0.2) == decimal.Decimal(0.3))
|
||||
```
|
||||
|
||||
Still `False` because the floats are imprecise.
|
||||
|
||||
```python
|
||||
print(decimal.Decimal('0.1') + decimal.Decimal('0.2') == decimal.Decimal('0.3'))
|
||||
```
|
||||
|
||||
Returns `True` because strings preserve precision.
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
* `datetime` handles dates and times
|
||||
* `math` provides mathematical constants and functions
|
||||
* `random` generates pseudo-random values
|
||||
* `decimal` solves floating-point precision problems
|
||||
* Always use strings when creating `Decimal` values
|
||||
|
||||
Reference in New Issue
Block a user