PyNotes
260 subscribers
125 photos
7 videos
1 file
60 links
**Code is communication**
admin: @Xojarbu
https://t.me/solutions_py for problem solutions
Download Telegram
Instead of this
names = ['Alice', 'Bob', 'Dilbert']
Use:
>>> names = [
... 'Alice',
... 'Bob',
... 'Dilbert',
... ]

That way there’s one item per line, making it perfectly clear which one was added, removed, or modified when you view a diff in your source control system. It’s a small change but helpful to avoid silly mistakes. It also easier for your teammates to review your code changes.

#Source "Python Tricks" by Dan Bader
#not_secure
f = open('hello.txt', 'w')
f.write('hello, world')
f.close()

This implementation won’t guarantee the file is closed if there’s an exception during the f.write() call

#Secure
with open('hello.txt', 'w') as f: f.write('hello, world!')
Context Managers
#not_secure
f = open('hello.txt', 'w')
f.write('hello, world')
f.close()

This implementation won’t guarantee the file is closed if there’s an exception during the f.write() call

#Secure
with open('hello.txt', 'w') as f:
f.write('hello, world!')

Behind the scenes context manager is implementing the following:
f = open('hello.txt', 'w')
try:
f.write('hello, world')
finally:
f.close()

#Source "Python Tricks" by Dan Bader
Single Leading Underscore:
_var is a hint to tell another programmer that a variable or method starting with a single underscore is intended for internal use.

!!!Note: if you import all the names from the module, Python will not import names with a leading underscore(unless the module defines an all list that overrides this behavior)

#Source "Python Tricks" by Dan Bader
What are dunders?

In the python community Dunders are double underscores.
For example, you’d pronounce __baz as “dunder baz.”
PUT with PATCH
PUT is idempotent, while PATCH is not.

What does idempotent mean?

It means that any number of repeated, identical requests will leave the resource in the same state. 
or
Idempotent operations produce the same result even when the operation is repeated many times. The result of the 2nd, 3rd, and 1,000th repeat of the operation will return exactly the same result as the 1st time.

common idempotent methods: GET, HEAD, PUT, DELETE, OPTIONS, TRACE
common non-idempotent methods: POST,PATCH, CONNECT
#functions
Function notes
Python adds an implicit return None statement to the end of any function. Therefore, if a function doesn’t specify a return value, it re- turns None by default. you can replace return None statements with bare


#Source "Python Tricks" by Dan Bader
#object_comparisons
“is” vs “==”
there are actually two dunder methods that control how objects are converted to strings in Python 3.
__str__ is one of Python’s “dunder” (double-underscore) methods and gets called when you try to convert an object into a string

Inspecting an object in a Python inter-
preter session simply prints the result of the object’s __repr__ .

Why Every Class Needs a __repr__
If
you don’t add a str method, Python falls back on the result
of __repr__ when looking for __str__ .
ASCII stands for American Standard Code for Information Interchange. Computers can only understand numbers, so an ASCII code is the numerical representation of a character such as 'a' or '@' or an action of some sort.
Title: Object copying
#Source "Python Tricks" by Dan Bader
Namedtuples sample

Namedtuples are immutable containers, just like regular
tuples. All attributes on a
namedtuple object follow the “write once, read many” principle.

namedtuple is also immutable as tuples.
#Deque
A deque
(double-ended queue), from collections library, has the feature of adding and removing elements from either end(source). It is preferred over list in the cases where we need quicker append and pop operations from both the ends of container, as deque provides an O(1) time complexity for append and pop operations as compared to list which provides O(n) time complexity (source).
#Deque_continue
deque(maxlen=N) creates a fixed-sized queue. When new items are added and the queue is full, the oldest item is automatically removed. (Source: "Python Cookbook")
#SubArray, #SubSequence, #SubSet

Comparing SubArray SubSequence and SubSet

Subarray
is contiguous sequence in an array.
e.g we have an array of {1, 2, 3, 4}
subarray can be: {1,2,3}, {2,3,4}, {1,2} etc.

A subsequence doesn't need to be contiguous, but maintains order
e.g subsequence can be: {1, 2, 4} {2, 4} {1, 3, 4} etc.

A subset doesn’t need to maintain order and has non-contiguous behavior.
e.g subset can be: {4, 1,3} {3, 1, 2 } etc.
#heapq

Finding the Largest or Smallest N Items

The heapq
module has two functions—nlargest() and nsmallest()

✍️ note
that If you are simply trying to find the single smallest or largest item (N=1), it is faster to use min() and max()

source: "python cookbook" 3rd edition
sort() with sorted()

the sort()
function will modify the list it is called on. The sorted() function will create a new list containing a sorted version of the list it is given.
Dict keyword access
If nested dictionary throws an error while getting item by key with get(), You can use default empty {}