Getting with Python
Share This Class:
Overview
Making a virtual env:
Why Virtual env?
Because managing python dependencies is a mess, this will install dependencies for that project only instead of globally.
- python -m venv venv this will create a venv folder in your directory.
- source ./venv/bin/activate this will activate this virtual env.
Comments in python
- single-line use #
# single line comments
- multiline use »’. often called as docstring, as it is just to document function/classes.
»’This is a example of Multiline comment. »’
Data Types:
- int # Whole Numbers
- float # Number with decimals.
- str # String
- list # ordered sequence of object
- dict # unordered key-value pairs.
- tup # ordered immutable seq. of objects.
- set # Unordered collection of unique objs.
- bool # Logical value True / False.
- None # no value
Naming conventions:
- Use underscore for variables.
- variables cannot Start with a number.
- Avoid special meaning keywords.
- Use snake case for functions.
- Use CamelCase for Classes names.
Printing in Python:
print(« »)
Numbers in Python:
print(1+2) # Additionprint(3-2) # Subtractionprint(3*2) # Multiplicationprint(3/2) # Divisionprint(3%2) # Mod.print(3**2) # Powerprint((3 + 10) * 15) # Using Braces.
Using with variables:
a = 10print(a)# TO check the type:print(type(a))
Variables make it easy to understands the code.
my_income = 100tax_rate = 0.1my_taxes = my_income*tax_rateprint(« My income tax is »,my_taxes)
Strings in Python:
String is nothing but ordered seq. of characters. Note: Strings are immutable
Using directly with print:
print(« Simple String »)print(‘Add quotes inside the « string » by using single quote.’)print(« concat string « + »like this »)
Taking Input
greeting = « Hello »name = input(« Enter your name: « )print(greeting + ‘ ‘ + name)
Use , instead of + This will auto seprate them by spaces.
print(greeting,name)
Escape characters in python:
print(« Hello\nWorld »)# orprint(« » » —Helloworld\Yeahh!! »Quotes »‘Single quote’ —« » »)
Check the length of the string:
print(len(« Hey »))
String indexing
a = « Hello »a[0] Will return H
String Slicing
a[start:end:step]a[0:2] # Start from 0th index till 2(excluding)a[::2] # Step will be 2.# We can use this to print a string backwardss[::-1]
String methods:
# Multiply Stringsa = ‘H’ * 10# Upper Case a strings.upper()# Lower cases.lower()# Splittings.split(‘W’)s.split() # split via whitespace.
Formatting strings:
- .format()
- f » » F-string
print(‘The {2} {1} {0}’.format(‘fox’,’brown’,’quick’))print(‘First Object: {a}, Second Object: {b}, Third Object: {c}’.format(a=1,b=’Two’,c=12.3))num = 23.45print(« My 10 character, four decimal number is:{0:10.4f} ».format(num))print(f »My 10 character, four decimal number is:{num:10.4f} »)
String Print alignment
left_alignment = « Left Text »center_alignment = « Centered Text »right_alignment = « Right Text »print(f »{left_alignment : <20}|{center_alignment : ^15}|{right_alignment : >20} »)
Lists in Python:
Basic Usage
None Bash CSS C C# Go HTML Java JavaScript JSON PHP Powershell Python Ruby SQL TypeScript YAML Copy
# Supports dynamic types, as it is python :)my_list = [100,2.5, »Mohit »]# len(my_list) for length# Change objs:my_list[0]=1000
Slicing is same as String slicing
Concat
a = [1,2,3]b = [4,5]c = a + b
Append the list
my_list.append(10.8)
Poping objs
my_list.pop(index) # default index is -1, returns popped element.
Sorting
a = [1,2,3]a.sort() # in-place sort, it will modify the list, returns None# Tip: use sorted(a) it will return the value instead of in-place
Reverse
a = [1,2,3]a.reverse() # also in-place
Nested list
a = [1, 2, 3, [4,5,]]print(a[3][1]) # Returns 5.
Dictionaries in Python
Unordered key-value mappings, basically you can have custom keys </br>Think it like, you can use this to make dynamic variables, where key will be the variable name. </br>Like list value can be any data type.
Basic Usage
prices = {« apple »:10, « orange »:20.5}print(prices)print(prices[« apple »])print(prices.keys()) # get keysprint(prices.values()) # get valuesprint(prices.items()) # get items, return tuples with keys and valuesprint(prices.pop(« apple »)) # Pop the objectprint(prices)print(prices.clear()) # Clear Allprint(prices)print(prices.get(« banana »)) # it will check if it is present, return None if not.print(prices.__contains__(« apple »)) # Returns true/false
Tuples in Python
Same as a list, but immutable.
Basic Usage
a = (1,2,2,4)print(a)# Interesting Fact: tuple supports only two methods:a.count(2) # This can be use with list as well.a.index(3) # This can be use with list as well.
Sets in Python
Sets are an unordered collection of unique elements.
a = set()a.add(1)a.add(1)a.add(1)print(a) # {1}
Convert list to set
a = [1,1,2,2,2,3,3,3]a = set(a)
File IO with Python
init file obj
file = open(« file.txt »)
read contents
contents = file.read()print(contents)
move the cursor/pointer
file.seek(0)
read line by line
contents = file.readlines() # returns list of lines.
close the file
file.close()
Using context manager
with open(« file.txt ») as file: print(file.read())
different modes for file
- r: Read
- r+: Read and Write
- w: Write (will override the file)
- w+: Write + Read (will override the file)
- a: Append the file
Chaining comparison operators:
To chain ==, != <, >, >=, <= and is these operators, we have these logical operators
- and
- or
- not
if 2 > 3 and 2 > 5: print(« I am inevitable »)if « hello » is « world » or « india » is « country »: print(« Yeah!! »)if not 10 == 10: print(« Tough luck! » )
Python Statements:
Indentation is important in python.
if, elif, else
loc = ‘Bank’ if loc == ‘Auto Shop’: print(‘Welcome to the Auto Shop!’)elif loc == ‘Bank’: print(‘Welcome to the bank!’)else: print(‘Where are you?’)
for loops
# iterate list/string/tuplel = [1,2,3]for item in l: print(item)# extraction made easylist2 = [(2,4),(6,8),(10,12)]for t1,t2 in list2: # Same as dict. t1 will be key, t2 will be value. print(t1) # will print 2,6,10# Protip about dict: use .value() and .keys() for looping Values/keys.
white loops
in python we can use python with else statement.
x = 1while x < 3: print(f »x is {x} ») x = x + 1else: print(« Uhhoo! x > 3 »)
Statement in python
- break: Breaks out of the current closest enclosing loop.
- continue: Goes to the top of the closest enclosing loop.
- pass: Does nothing at all, Programmers use this for placeholder.
def future_method(): # Todo: implement it later. passwhile True: breakfor i in range(10): if i == 5: #omit continue print(i)
Some useful operators
range()
range is a generator. <br/> Syntax: range(start,end,step) <br/> Use directly with loops for iteration.
a = list(range(0,11,2)) # returns 0,2,4,..10
enumerate()
with help of this we can keep track of index and value.
a = [20,100,5,3,6]for index,value in enumerate(a): print(f »{index}\t{value} »)
zip()
zip multiple lists.a = [1,2,3]b = [4,5,6]for item in zip(a,b): print(item)
in operator:
a = [1,2,3]print(3 in a) # True
min and max:
a = [1,2,3]print(min(a)) # 1print(max(a)) # 3
List Comprehensions
Quicker and unique way to create lists.
# Grab every letter in stringlst = [x for x in ‘word’] # Square numbers in range and turn into listlst = [x**2 for x in range(0,11)] # Check for even numbers in a rangelst = [x for x in range(11) if x % 2 == 0]
help function in python
if you are lazy like me, want to learn documentation about specific inbuilt method via terminal, you can use help()
a = [1,2,3]help(a.insert) # will print info about this method
Functions in python
Basic function with argument and default value
# def keyword to define functions.def say_hello(name= »world »): print(f »Hello {name}! ») # or return f »Hello {name}! » if you want to return it.
*args and **kwargs
- *args: N number of arguments, returns tuple.
- **kwargs: N number of keyword arguments, returns dict.
def total_income(*args, **kwargs): print(f »Income for month, {kwargs[‘month’]} is : {sum(args)} »)total_income(10,20,300,month= »July »)
lamda, filter and map
#mapdef square(num): return num**2my_nums = [1,2,3,4,5]map(square,my_nums) # 1, 4, 9, 16, 25 # filterdef check_even(num): return num % 2 == 0nums = [0,1,2,3,4,5,6,7,8,9,10]filter(check_even, nums) # 0, 2, 4, 6, 8, 10 # lets convert each of the above function to lambda.map(lambda num:num**2,my_nums)filter(lambda num:num%2==0, nums)
Classes in python
Basic implementation
class Circle: pi = 3.14 # Circle gets instantiated with a radius (default is 1) def __init__(self, radius=1): self.radius = radius self.area = radius * radius * Circle.pi # Method for resetting Radius def setRadius(self, new_radius): self.radius = new_radius self.area = new_radius * new_radius * self.pi # Method for getting Circumference def getCircumference(self): return self.radius * self.pi * 2 c = Circle() print(‘Radius is: ‘,c.radius)print(‘Area is: ‘,c.area)print(‘Circumference is: ‘,c.getCircumference())
Inheritance
class Animal: def __init__(self): print(« Animal created ») def whoAmI(self): print(« Animal ») def eat(self): print(« Eating ») class Dog(Animal): def __init__(self): Animal.__init__(self) print(« Dog created ») def whoAmI(self): print(« Dog ») def bark(self): print(« Woof! »)
Polymorphism
class Animal: def __init__(self, name): # Constructor of the class self.name = name def speak(self): # Abstract method, defined by convention only raise NotImplementedError(« Subclass must implement abstract method ») class Dog(Animal): def speak(self): return self.name+’ says Woof!’ class Cat(Animal): def speak(self): return self.name+’ says Meow!’ fido = Dog(‘Fido’)isis = Cat(‘Isis’) print(fido.speak())print(isis.speak())
Using Special methods
Just like __init__ we have more special methods.
class Book: def __init__(self, title, author, pages): print(« A book is created ») self.title = title self.author = author self.pages = pages def __str__(self): return « Title: %s, author: %s, pages: %s » %(self.title, self.author, self.pages) def __len__(self): return self.pages def __del__(self): print(« A book is destroyed ») book = Book(« Python Rocks! », « Jose Portilla », 159) #Special Methodsprint(book)print(len(book))del book
Exception Handling
#try, except, finally, and else.
def askint(): while True: try: val = int(input(« Please enter an integer: « )) except: # You can also expect specific error like TypeError or generic type Exception print(« Looks like you did not enter an integer! ») continue else: print(« Yep that’s an integer! ») break finally: print(« Finally, I executed! ») print(val)
Decorators
def new_decorator(func): def wrap_func(): print(« Code would be here, before executing the func ») func() print(« Code here will execute after the func() ») return wrap_func @new_decoratordef func_needs_decorator(): print(« This function is in need of a Decorator ») func_needs_decorator()# Code would be here, before executing the func# This function is in need of a Decorator# Code here will execute after the func()
Generators
# Without generatordef get_me_cubes(n): output_list = [] for i in range(n): output_list.append(i**3) return output_list print(get_me_cubes(10))# With generatordef generate_cubes(n): for i in range(n): yield i**3 print(generate_cubes(10))
Useful Python modules you should look.
- collections
- os
- shutil
- datetime
- math
- random
- pdb
- re
- timeit
- zipfile
Working with CSVs in python
# don’t forget to install csvimport csvdata = open(‘example.csv’,encoding= »utf-8″)# passing encoding is important otherwise you will get the Unicode error.csv_data = csv.reader(data)# readingdata_lines = list(csv_data)# writing file_to_output = open(‘to_save_file.csv’,’w’,newline= »)# use ‘a’ for appendcsv_writer = csv.writer(file_to_output,delimiter=’,’)csv_writer.writerow([‘a’,’b’,’c’])file_to_output.close()
Working with pdfs in python
# don’t forget to use PyPDF2import PyPDF2f = open(‘Working_Business_Proposal.pdf’,’rb’)# we need to pass rb for binary files.pdf_text = [] pdf_reader = PyPDF2.PdfFileReader(f) for p in range(pdf_reader.numPages): page = pdf_reader.getPage(p) pdf_text.append(page.extractText())
Sending Emails with python
import smtplibsmtp_object = smtplib.SMTP(‘smtp.gmail.com’,587)email = « youremail@email.com »password = « yourpassword »# Tip: search about how you generate app passwords.smtp_object.login(email,password)from_address = « fromemail@email.com »to_address = « toemail@email.com »subject = « Subject »message = « Message »msg = « Subject: » + subject + ‘\n’ + messagesmtp_object.sendmail(from_address,to_address,msg)smtp_object.quit()
That’s it.