why are cogs used discord.py code example

Example 1: how to make a cog discord.py

from discord.ext import commands

class Test_Cog(commands.Cog):
	def __init__(self, bot):
      self.bot = bot # defining bot as global var in class
      
	@commands.Cog.listener() # this is a decorator for events/listeners
    async def on_ready(self):
      print('Bot is ready!.')
      
	@commands.command() # this is for making a command
    async def ping(self, ctx):
		await ctx.send(f'Pong! {round(self.bot.latency * 1000)}')
        
def setup(bot): # a extension must have a setup function
	bot.add_cog(Test_Cog(bot)) # adding a cog

Example 2: discord.py cogs example

import os
import discord
from discord.ext import commands

prefix = "?"
cogs_folder="./cogs"

bot = commands.Bot(command_prefix=prefix)

for file in cogs_folder:
  if file.endswith(".py"):
    try:
      bot.load_extension(f"cogs.{file[:-3]}")
      print(f"Loaded: {file}")
    except:
      print(f"Could not load: {file}")