{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "FGV - Escola de Matemática Aplicada\n", "==\n", "Introdução à Programação com a Linguagem Python\n", "--" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Escopos em Python" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "local2\n", "local1\n", "global\n" ] } ], "source": [ "x = 'global'\n", "def local1():\n", " x = 'local1'\n", " def local2():\n", " x = 'local2'\n", " print(x)\n", " local2() \n", " print(x)\n", "local1()\n", "print(x)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sexta chamada fulano\n", "primeira chamada sicrano\n", "quarta chamada sicrano\n", "segunda chamada fulano\n", "terceira chamada beltrano\n", "quinta chamada beltrano\n", "setima chamada None\n" ] } ], "source": [ "x = 'fulano'\n", "\n", "def escopo1():\n", " x = 'sicrano'\n", " print('primeira chamada {}'.format(x))\n", " def escopo2():\n", " global x\n", " print('segunda chamada {}'.format(x))\n", " x = 'beltrano'\n", " print('terceira chamada {}'.format(x))\n", " #print(x)\n", " return x\n", " print('quarta chamada {}'.format(x))\n", " x = escopo2()\n", " print('quinta chamada {}'.format(x))\n", " \n", " \n", "print('sexta chamada {}'.format(x))\n", "x = escopo1()\n", "print('setima chamada {}'.format(x))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "global\n" ] } ], "source": [ "x = 'global'\n", "def passagem(z):\n", " x = 'local'\n", " if type(z) == str:\n", " print(z)\n", " else:\n", " print('o parâmetro deve ser do tipo string')\n", "\n", "passagem(x)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3\n" ] } ], "source": [ "x = 1\n", "\n", "def soma_1(x):\n", " x += 1\n", " def soma_mais_um(x):\n", " x += 1\n", " return x\n", " x = soma_mais_um(x)\n", " return x\n", "\n", "x = soma_1(x)\n", "print(x)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "str" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recordando: métodos de tipos mutáveis e métodos de tipos imutáveis" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4]\n" ] } ], "source": [ "lista = [1,2,3]\n", "\n", "def acrescenta(uma_lista):\n", " uma_lista.append(4)\n", " return uma_lista\n", "\n", "lista = acrescenta(lista)\n", "print(lista)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4]\n" ] } ], "source": [ "lista = [1,2,3]\n", "\n", "def acrescenta(uma_lista):\n", " uma_lista.append(4)\n", "\n", "acrescenta(lista)\n", "print(lista)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4]\n" ] } ], "source": [ "lista = [1,2,3]\n", "\n", "def acrescenta():\n", " lista.append(4)\n", "\n", "acrescenta()\n", "print(lista)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n" ] } ], "source": [ "lista = [1,2,3]\n", "lista = lista.append(4)\n", "print(lista)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "None\n", "[1, 2, 3]\n" ] } ], "source": [ "l = [3,2,1]\n", "m = l.sort()\n", "print(m)\n", "print(l)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Renato\n", "RENATO\n" ] } ], "source": [ "s = 'Renato'\n", "z = s.upper()\n", "print(s)\n", "print(z)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "After local assignment: test spam\n", "After nonlocal assignment: nonlocal spam\n", "After global assignment: nonlocal spam\n", "In global scope: global spam\n" ] } ], "source": [ "def scope_test():\n", " def do_local():\n", " spam = \"local spam\"\n", " \n", " def do_nonlocal():\n", " nonlocal spam\n", " spam = \"nonlocal spam\"\n", " \n", " def do_global():\n", " global spam\n", " spam = \"global spam\"\n", " \n", " spam = \"test spam\"\n", " do_local()\n", "\n", " print(\"After local assignment:\", spam)\n", " do_nonlocal()\n", " print(\"After nonlocal assignment:\", spam)\n", " do_global()\n", " print(\"After global assignment:\", spam)\n", "\n", "scope_test()\n", "print(\"In global scope:\", spam)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.6" } }, "nbformat": 4, "nbformat_minor": 2 }