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.

 

What people are saying