Um monte de códigos preparados que podem ser chamados quando necessário
Desvantagens representadas por código repetido: redundância, baixa capacidade de manutenção
Portanto, para agrupar várias linhas de código em um todo: a função
Em Python, use a palavra-chave def para declarar uma função
# def 函数名():# 函数要执行的操作
Depois que a função é definida, ela não será executada automaticamente
Precisa usar o nome da função (parâmetro) para chamar
Um nome de função também é um identificador
Composto por números, letras e sublinhados, não pode começar com um número e diferencia maiúsculas de minúsculas; palavras-chave não podem ser usadas
Obedeça à convenção de nomenclatura e use um sublinhado para conectar; como o nome indica: a lógica executada pela função deve ser preferencialmente consistente com o nome da função
parâmetros de função
Quando uma função é declarada, os parâmetros entre parênteses são chamados de parâmetros formais, ou simplesmente parâmetros formais.
O valor do parâmetro formal é indeterminado, é usado apenas como um espaço reservado
Ao chamar uma função, você pode passar parâmetros formais
Os parâmetros passados quando a função é chamada são os dados reais envolvidos na operação, que chamamos de parâmetros reais
Quando a função é chamada, os parâmetros reais serão passados para os parâmetros formais em correspondência um a um.
Você também pode especificar o nome da variável e passar o parâmetro real para o parâmetro formal
valor de retorno da função
O valor de retorno é o resultado da execução da função, mas nem todas as funções devem ter um valor de retorno
defadd(a,b):
c = a+b # 变量C在外部是不可见的,只能在函数内部使用return c # return 表示一个函数的执行结果
result = add(1,2)print(result **4)
Se uma função não retornar um valor, ela retornará None
Documentação para a função
Use um par de três aspas, no corpo da função, para indicar a descrição da função
Ao escrever uma função, adicione: int após o parâmetro formal para especificar o tipo do parâmetro real que você deseja passar
defadd(a:int,b:str):# 希望a的类型是int,b的类型是strpass
função de chamada de função
Na função 2, a função 1 pode ser chamada diretamente. Quando a função 2 for chamada, a função 1 será chamada de acordo com a posição da função 1 no código da função 2. A demonstração é a seguinte:
deffunction_1():print('函数1开始了')print('函数1结束了')deffunction_2():print('函数2开始了')print('开始调用函数1')
function_1()print('函数1调用结束')print('函数2结束了')
function_2()# 函数2开始了# 开始调用函数1# 函数1开始了# 函数1结束了# 函数1调用结束# 函数2结束了# 求m阶乘的和deffac(n):
x =1for i inrange(1,n+1):
x *= i
return x
defsum(m):
x =0for i inrange(1,m+1):
x += fac(i)return x
print(sum(5))
Variáveis globais e locais
Python pode usar funções para separar escopos
As variáveis definidas fora da função são variáveis globais e podem ser acessadas em todo o arquivo py
A variável definida dentro da função é uma variável local, que é uma função local e só pode ser usada dentro da função
A função interna globals() locals() pode imprimir as variáveis globais e variáveis locais na função
a =100# a是全局变量
word ='hello'deftest():
b =80# b是局部变量
a =10print(a)# 如果在函数内部声明了一个与外部全局变量相同名称的变量,会新建一个函数内部的局部变量# 而不是修改外部的全局变量# 如果需要修改全局变量,可以使用global关键字global word
word ='thank'print(word)print('locals = {},globals = {}'.format(locals(),globals()))# ocals = {'b': 80, 'a': 10},globals = {'__name__': '__main_........ 全局变量非常多
test()# 10print(a)# 100print(word)# thank
Função de vários valores de retorno
return indica o fim de uma função
Em circunstâncias normais, uma função só executará no máximo uma instrução de retorno
Em casos especiais (instrução final), a próxima função pode executar várias instruções de retorno
deftest(a,b):
x = a // b
y = a % b
# return x # return y# 以上代码只会执行一个return# return {'x':x,'y':y} # 以字典的形式返回# return [x,y] # 以列表的形式返回# return (x,y) # 以元组的方式返回return x,y # 返回的本质实际上就是返回一个元组print(test(12,5))# (2, 2)
Uso de parâmetros padrão
Os parâmetros de algumas funções, se passar parâmetros, use os parâmetros passados, se não passar parâmetros, use o valor padrão
Como definir o valor padrão de um parâmetro formal: Ao definir uma função, forneça diretamente um valor ao parâmetro formal no parâmetro formal que precisa de um valor padrão
Se nenhum parâmetro for passado, o valor padrão será usado. Se o parâmetro for passado, o parâmetro passado será usado, conforme a seguir
Em algumas linguagens de programação, a duplicação de função é permitida, mas a duplicação de função não é permitida em Python
Se a função tiver o mesmo nome, a última função substituirá a anterior
Em Python, um nome de função também pode ser entendido como um nome de variável
Portanto, ao definir uma função, não tenha o mesmo nome da função interna
recursão de função
Simplificando, recursão significa que a própria função chama a si mesma
A coisa mais importante sobre a recursão é encontrar a saída (condição de parada)
# 使用函数递归求1-n的和
x =0defget_sum(n):global x
x += n
n -=1if n >=1:
get_sum(n)return x
print(get_sum(100))# 5050# 递归方法2defget_sum2(n):if n ==0:return n
return n + get_sum2(n-1)print(get_sum2(100))# 5050# 使用函数递归求n!defget_num(n):if n ==0:return1return n * get_num(n-1)print(get_num(0))# 1# 斐波那契数列的第N个数字defget_fi(n):if n ==2or n ==1:return1return get_fi(n-2)+ get_fi(n-1)print(get_fi(8))# 21
função anônima
defadd(a,b):return a+b
x = add(1,2)# 函数名(实参)作用是调用函数,获取到行数的执行结果并赋值给变量 x
fn = add # 相当于给函数add起了一个别名叫fn
Usando a palavra-chave lambda pode ser usado para definir uma função
Função anônima, usada para expressar uma função simples
Como chamar uma função anônima:
A primeira: definir um nome para ele (raramente usado assim)
A segunda: passar esta função como parâmetro para outra função usar