Escrevendo suas próprias funções
Uma função que termina sem return devolve None, e por isso print(print("hi")) mostra hi e depois None.
Duas funções que parecem iguais na tela
A maioria dos iniciantes acredita que mostrar um valor e devolvê-lo são a mesma coisa. Aqui estão duas funções que parecem "dar" a área de um retângulo. def inicia a definição de uma função: um nome, as entradas entre parênteses, dois-pontos e um corpo recuado. Execute o programa e as duas linhas de saída parecem iguais.
def show_area(w, h):
print(w * h)
def area(w, h):
return w * h
show_area(4, 3)
print(area(4, 3))12
12Agora tente usar os resultados num cálculo. A diferença aparece na hora.
def show_area(w, h):
print(w * h)
def area(w, h):
return w * h
a = show_area(4, 3)
b = area(4, 3)
print(a, b)
print(b * 2)12
None 12
24show_area imprime 12 na tela e termina. Não devolve nada, e uma função que não devolve nada retorna o valor especial None. Então a é None. area não imprime nada; ela devolve 12 à linha que a chamou, e esse 12 pode ser guardado, impresso ou dobrado. Imprimir é para as pessoas que olham a tela. Devolver é para o resto do programa. Se você quer usar um resultado depois, devolva-o.
Parâmetros são os nomes, argumentos são os valores
Em def area(w, h):, w e h são parâmetros: nomes que existem só dentro da função. Em area(4, 3), 4 e 3 são argumentos: os valores que preenchem esses nomes naquela chamada. Eles são associados por posição, então o primeiro argumento vai para o primeiro parâmetro. Chame a função com o número errado de argumentos e o Python para com um TypeError que cita o parâmetro que falta.
Um parâmetro pode ter um valor padrão, escrito com = na definição. Quem chama pode omitir esse argumento, e o padrão é usado. O tutorial do Python mostra valores padrão na seção sobre definir funções, e eles estão por toda parte nas funções embutidas. O próprio print tem um: o parâmetro end tem como padrão uma nova linha.
def greet(name, greeting="Hello"):
return f"{greeting}, {name}!"
print(greet("Mina"))
print(greet("Jun", "Hi"))
print("no new line", end=" ")
print("here")Hello, Mina!
Hi, Jun!
no new line herereturn encerra a função na hora
Uma função para no primeiro return que alcança, mesmo que haja mais linhas abaixo. Isso faz dos retornos antecipados um jeito limpo de tratar casos especiais. A função abaixo usa a regra do ingresso da unidade sobre if, agora empacotada para que qualquer parte do programa possa pedir um preço.
def ticket_price(age):
if age < 7:
return 0
if age <= 18:
return 3000
return 5000
family = [40, 15, 5]
total = 0
for age in family:
total += ticket_price(age)
print(total)8000As variáveis criadas dentro de uma função são locais: existem enquanto a função roda e desaparecem quando ela termina. Uma variável chamada total dentro de uma função não tem nada a ver com um total fora dela. Isso permite reutilizar uma função sem se preocupar com quais nomes o resto do programa usa.
| def | Inicia a definição de uma função |
| parâmetro | Um nome na definição: w em def area(w, h) |
| argumento | Um valor passado numa chamada: 4 em area(4, 3) |
| return | Devolve um valor e encerra a função |
| None | O que uma função devolve quando não tem return |
| variável local | Uma variável que existe só dentro de uma função |
- O que isto mostra?
def double(x): return x * 2 print(double(7)) - O que isto mostra?
def hello(): print("hi") result = hello() print(result)hi
hihi
NoneNonehi
- O que isto mostra?
def add(a, b): return a + b print(add(2, 3) * add(1, 1)) - O que isto mostra?
def f(x): return x + 1 print("never") print(f(1)) - O que isto mostra?
def greet(name, greeting="Hello"): return greeting + " " + name print(greet("Bo")) - O que isto mostra?
def sign(n): if n > 0: return "plus" if n < 0: return "minus" return "zero" print(sign(-4), sign(0)) - O que isto mostra?
print("a", end="-") print("b") - O que isto mostra?
def total_of(nums): t = 0 for n in nums: t += n return t print(total_of([4, 5, 6])) - Em def area(w, h):, como w e h se chamam?
- Argumentos
- Parâmetros
- Valores de retorno
- Palavras-chave
- Coloque as linhas em ordem para o programa imprimir 25.Saída
25
- "Uma função que imprime a resposta a devolveu." Imprimir só mostra o valor. A função continua devolvendo None, então x = show_area(4, 3) deixa x como None e x * 2 para com TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'.
- "Posso chamar uma função acima da linha em que a defino." O Python executa de cima para baixo, então nesse ponto o nome ainda não existe: NameError: name 'area' is not defined. Ponha o def acima da primeira chamada.
- "Se eu omitir um argumento, ele vira zero." Sem valor padrão, o Python para: area(4) dá TypeError: area() missing 1 required positional argument: 'h'.
- def name(params): inicia uma função; o corpo é recuado.
- return devolve um valor e encerra a função.
- print mostra um valor; não o devolve. Sem return, o resultado é None.
- Os argumentos preenchem os parâmetros por posição; os valores padrão preenchem os que faltam.
- As variáveis criadas dentro de uma função são locais a ela.
Fontes deste curso (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Data de verificação: 2026-10-19