Coder Social home page Coder Social logo

minicurso-python's People

Contributors

michaelss avatar

Watchers

 avatar  avatar

Forkers

mjuliano21

minicurso-python's Issues

exemplo de decorator simples

exemplo de decorator simples

import time

def tempo(funcao):
    def envolver(*args, **kwargs):
        inicio = time.time()

        ret = funcao(*args, **kwargs)

        final = time.time()
        print("nome da funcao: {}".format(funcao.__name__))
        print("--- executada em %s segundos ---" % (final - inicio))

        return ret

    return envolver


@tempo
def funcao_demorada():
    time.sleep(1)


funcao_demorada()

get e set em python + heranca

class Pessoa:

    empresa = 'ACME'

    def __init__(self, nome, idade):
        # Não foi preciso declarar os atributos fora do construtor
        self.nome = nome
        self.idade = idade

    def primeiro_nome(self):
        return self.nome.split()[0]

    def ultimo_nome(self):
        """
        Retorna o ultimo nome
        """
        return self.nome.split()[-1]


class Adulto(Pessoa):

    # esse eh o get
    @property
    def idade(self):
        """
        documentacao da funcao
        retorna a idade
        """
        return self._idade


    # esse eh o set
    @idade.setter
    def idade(self, x):
        print("set idade")
        assert x >= 18, "Proibido para menores de 18 anos"
        self._idade = x


p = Pessoa("maria", 10)
print(p.idade)
p.idade = 22
print(p.idade)
a = Adulto("maria", 22)
print(a.idade)
a.idade = 2
a = Adulto("crianca", 5)

Documentação: https://docs.python.org/3/library/functions.html#property

algumas dicas que eu acho útil mostrar

função help(), dir() e type() são bem uteis

pprint é bem útil também

>>> import pprint
>>> 
>>> dic = {"Nome" : "Michael Schuenck", "Localidade": {"TO": ["Palmas", "Gurupi", "Araguaina"], "SP" : ["Sao Caetano", "Sao Paulo"], } }
>>> pprint.pprint(dic, indent=4)
{   'Localidade': {   'SP': ['Sao Caetano', 'Sao Paulo'],
                      'TO': ['Palmas', 'Gurupi', 'Araguaina']},
    'Nome': 'Michael Schuenck'}

Não sei se um curso introdutório é interessante falar dos cuidados com os argumentos padrão de funções.

>>> def func(a=[]):
...     a.append(1)
...     return a
... 
>>> func()
[1]
>>> func()
[1, 1]
>>> func()
[1, 1, 1]
>>> func()
[1, 1, 1, 1]
>>> func()
[1, 1, 1, 1, 1]
>>> z = [3, 4]
>>> func(z)
[3, 4, 1]
>>> func(z)
[3, 4, 1, 1]
>>> func()
[1, 1, 1, 1, 1, 1]
>>> 

Diferentemente de outras linguagens, funções python podem retornar múltiplos parâmetros, acho que isso é interessante de falar.

>>> def t(a, b):
...     return a, b
... 
>>> t("Fabio", "Luz")
('Fabio', 'Luz')
>>> z = t("Fabio", "Luz")
>>> type(z)
<class 'tuple'>
>>> nome, sobrenome = t("Fabio", "Luz")
>>> nome
'Fabio'
>>> sobrenome
'Luz'
>>> 

Talvez seja um pouco avançado demais, mas com a funcao type, posso criar classes dinamicamente:

>>> def soma(self, a, b):
...     return a + b
... 
>>> def sub(self, a, b):
...     return a - b
... 
>>> atributos_e_funcoes = {"soma": soma, "subtracao": sub, "nome": "Fabio"}
>>> class A:
...     def __init__(self,):
...         self.idade = 10
... 
>>> NClasse = type("NovaClasse", (A, object), atributos_e_funcoes)
>>> z = NClasse()
>>> type(z)
<class '__main__.NovaClasse'>
>>> NClasse.__mro__
(<class '__main__.NovaClasse'>, <class '__main__.A'>, <class 'object'>)
>>> z.soma(1, 2)
3
>>> z.nome
'Fabio'
>>> z.idade
10
>>> z.sub(2, 1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NovaClasse' object has no attribute 'sub'
>>> z.subtracao(2, 1)
1
>>> 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.