NOME DURAÇÃO
Curso de Python
Primeira Aula de Python
Características do Python
Recursos do Python
IDLE - Modo Interativo do Python
Instalando o PyCharm no Windows
Primeiro programa em Python
Comentários em Python
Indentação do código Python
Variáveis em Python
Características das Variáveis em Python
Nomenclatura das Variáveis em Python
Tipos de dados em Python
Variáveis do tipo Ponto Flutuante do Python
Entrada de Dados em Python
Operadores Aritméticos do Python
Módulo da Divisão em Python
Potenciação e Radiciação em Python
Operadores Relacionais do Python
Tomada de Decisão em Python
Estrutura if e else em Python
Depurando código Python
Operadores Relacionais Compostos do Python
Operadores Relacionais na Prática em Python
Operadores Lógicos em Python
Blocos de Instrução em Python
Blocos de Instrução em Python (Parte II)
Blocos de Instrução Python na Prática
Escopo de Nomes em Python
Estrutura de Atribuição Simples do Python
Atribuição Múltipla em Python
Operadores de Atribuição Compostos do Python
Atribuição Condicional em Python
Iteração em Python
Laços de Repetição do Python
Estrutura de repetição while em Python
A instrução for em Python
A função range() do Python
O for loop e a função range() do Python
Instrução break do Python
Instrução continue em Python
Estruturas de Dados Lista em Python
Lista, Pilha, Array, Set em Python
A classe list do Python
Classe list - Conceitos Avançados do Python
Funções da Classe list do Python
Iteração de Listas em Python
Fatiando Listas em Python
Incluindo, Alterando e Excluindo Elementos no Python
Ordenamento de Listas em Python
Quantidade de Itens em Python
Tuplas em Python
Operadores in e not in do Python
Operadores and, or e in do Python
Exemplo com Operador in em Python
Introdução às Strings em Python
Fatiando Strings com Python
Funções das Strings no Python
Comparação de Strings em Python
Iterando Strings em Python
Introdução aos Dicionários do Python
Dicionários na Prática com Python
Funções dos Dicionários no Python
Introdução às Funções em Python
Parâmetros de Função em Python
Parâmetros default em Python
Argumento de Função Nomeado vs Posicional em Python
Retornando Valores pelas Funções em Python

Nesta aula iniciaremos o estudo das funções, a principal estrutura para separarmos e modularizarmos nossas aplicações. E também, são as funções que originam do Paradigma de Programação Funcional.

INTRODUÇÃO

Funções são blocos de instrução que podem ser invocados de qualquer parte do nosso código. Toda função, por definição, possui um nome, pode receber parâmetros e pode retornar valores. Nem toda função receberá parâmetros, da mesma forma, que nem toda função retornará valores. Tudo dependerá da situação, ainda assim, a estrutura sempre seguirá um padrão e por isso, é facilmente reconhecido.

Em Python, funções são objetos de primeira classe.

A ideia mais primitiva das funções é o agrupamento de instruções, proporcionando um meio simples de execução sequencial e que pode ser invocado de qualquer parte a qualquer momento. Dessa forma, toda função irá possuir um bloco de instrução e quando invocada, o cursor de execução do programa se posicionará na primeira linha desse bloco e a execução ocorrerá de cima para baixo, uma instrução após outra.

As função podem definir em seu cabeçalho um conjunto de valores que devem ser enviados quando a função for invocada. Desta foram, a função só será invocada se os valores forem também definidos. Após a execução das instruções definidas no bloco de instrução da função, a mesma poderá retornar um valor e, dessa forma, temos um ciclo onde os dados são enviados, processados e retornados. Por isso é que raramente devemos utilizar variáveis globais, até porque, todos valores podem ser enviados e retornados pelas funções de maneira explicita.

Como todos os parâmetros estão por definição associados a função e possuem seu escopo restrito a esta, acabamos por ter uma situação em que é fácil depurar e encontrar problemas, até porque, é de certeza absoluta que o valor de um parâmetro foi alterado no escopo da função - situação que não ocorre quando os valores são manipulados por variáveis globais, até porque, estas podem ter seus valores alterados em qualquer lugar por qualquer função.

Num primeiro momento, temos que entender que uma função é um bloco de instrução independente, até porque, possui escopo restrito, e após a execução das instrução definidas em seu bloco de instrução, a mesma é finalizada, as variáveis desalocadas e o cursor de execução do programa volta ao ponto onde a função foi invocada.

FUNÇÃO vs MÉTODO

O conceito de função e método se diferenciam só e somente só pelo retorno de valores.

Toda função é um bloco de instrução que, possui um nome único que a identifica em seu escopo, pode receber parâmetros e SEMPRE retorna um valor.

Um método é um bloco de instrução, possui um nome único que o identifica em seu escopo, pode receber parâmetros e NUNCA retorna valores.

Na prática utilizamos diversas vezes ambos conceitos, até porque, é normal precisarmos agrupar um conjunto de instruções para que sejam executadas sequencialmente e após a execução da última instrução, o cursor volta e o programa continua de onde parou.

Outras vezes, implementaremos blocos de instruções que processarão uma informação e retornaram informações processadas, logo, estamos utilizando o conceito de funções.

No nosso caso, temos que o Python não faz distinção explicita entre ambos conceitos. Então, o importante é somente conhecer os conceitos, até porque, na prática a implementação se tornará transparente.

INTRODUÇÃO ÁS FUNÇÕES EM PYTHON

Em Python, funções são objetos que podem ser invocados. Os Callable objects, ou entao, objetos invocáveis, se diferenciam dos demais objetos por implementarem a função __call__(). Por definição, todo objeto pra ser invocado precisa implementar a função __call__().

Dessa forma, funções são objetos do tipo types.FunctionType ou então, types.LambdaType. Por isso a importância em entender as funções como sendo objetos executáveis.

Uma referência seguida por um par de parêntesis é a notação que distingue o uso de variáveis e de objetos invocáveis. Essa notação implica na execução da função __call__(). A função __call__ também receberá os argumentos definidos entre parêntesis. Por fim, a função __call__ tem definido a capacidade de retornar valores.

Dessa definição, concluimos que objetos capazes de serem invocados poderão receber parâmetros, como também, poderão retornar valores.

Quando falamos de objetos que podem ser invocados é normal pensarmos em funções, porém, classes também são objetos invocaveis, até porque, a notação utilizada é a mesma e inclusive, é possível utilizar classes como sendo funções.

OBJETOS INVOCÁVEIS

A seguir temos os tipos de objetos que podem ser invocáveis, isto é, objetos que funcionam como funções. Sintaticamente falando, objetos invocáveis fazem uso do call operator () (operador de invocação).

  • User-defined functions
  • Instance methods
  • Generator functions
  • Coroutine functions
  • Asynchronous generator functions
  • Built-in functions
  • Built-in methods
  • Classes
  • Class Instances
class A():
    def self.__init__(self, *arg):
        pass

def func(num1, num2):
    pass

A(1, 2, 3) #invocando a classe A
func(1, 2) #invocando a função func

DEFINIÇÃO

Para declararmos uma função utilizamos a palavra reservada def.

A nomenclatura das funções segue as mesmas regras de nomenclatura das variáveis.

Em Python, não utilizamos o tipo de nomenclatura CamelCase, isto é, definir a primeira letra de cada palavra como sendo maiúscula. O padrão é separar as palavras com o uso de um underline.

def minha_func()
    print("Fala galera!")

INVOCANDO FUNÇÕES

O interpretador do Python tentará invocar uma função todas as vezes em que houver uma referência seguida por um par de parêntesis. Ao invocarmos uma função, é necessário enviar um valor válido para cada parâmetro contido na definição. Caso não haja parâmetros, basta somente abrirmos e fecharmos parêntesis.

minha_func()

EXEMPLO FEITO EM AULA

# coding: utf-8

# =================
#  = eXcript.com =
# =================

# INTRODUÇÃO ÀS FUNÇÕES

def minha_func():
    print("Fala galera!!")


Tags curso, python, função, procedimento, método, blog

Comentários

comments powered by Disqus