Diretório de artigos
prefácio
Continuando com o estudo desta semana,
1. Função
A definição da função pode conter vários parâmetros formais, portanto, a chamada da função também pode conter vários parâmetros reais. Existem muitas maneiras de passar parâmetros reais para a função: parâmetros reais posicionais podem ser usados e parâmetros reais de palavra-chave também podem ser usados.
1. Argumentos posicionais
Com base na ordem dos parâmetros reais, associe-os aos parâmetros formais.
def describe_pet(animal_type,pet_name):
print("I have a {animal_type}.".format(animal_type = animal_type))
print("My {animal_type} name is {pet_name}".format(animal_type = animal_type,pet_name = pet_name))
describe_pet('harry','hamster')
Neste exemplo, o primeiro parâmetro real 'harry'
é passado para animal_type
o parâmetro formal.
2. Argumentos de palavra-chave
describe_pet(animal_type = 'harry',pet_name = 'hamster')
Ele indica claramente para qual parâmetro formal passar o parâmetro real. A ordem é irrelevante.
3. Valor padrão
Você pode atribuir um valor padrão a um parâmetro formal ao definir uma função e será o valor padrão se você não atribuir um valor ao parâmetro formal ao chamá-lo. Ao definir, os parâmetros formais com valores padrão devem ser escritos após os parâmetros formais sem valores padrão, para ainda poder interpretar os argumentos posicionais corretamente.
4. Torne os argumentos opcionais
Às vezes, podemos ou não precisar de um parâmetro formal em uma função. Ao chamar, para garantir que a função possa ser executada normalmente, defina o valor padrão desse parâmetro formal para o final, para que, ao chamar , se não ‘ ’
houver parâmetro real, seu valor padrão é vazio, se houver este parâmetro real, especifique seu valor.
5. Passe a lista para a função
Se passarmos uma lista para a função e modificarmos a lista na função, a lista de parâmetros atuais também será modificada (entendida como passar o endereço da lista), por
exemplo
a = [1,2,3,4]
def list_a(a):
a.pop()
list_a(a)
a
[1, 2, 3]
Pode-se ver que o último elemento da lista a é deletado na função.Depois que a função é chamada, a lista a muda fora da função.
Se quisermos alterar a lista apenas dentro da função, mas a lista real a não mudar, como devemos fazer isso?
Uma cópia da lista a pode ser passada. Do seguinte modo
a = [1,2,3,4]
list_a(a[:])
a
[1, 2, 3, 4]
6. Passe qualquer número de argumentos
Se você não sabe quantos parâmetros a função precisa aceitar, você pode definir apenas um parâmetro formal ao definir a função.
Por exemplo
def deng(*x):
print(x)
deng(1)
(1,)
deng(1,2,3,4)
(1, 2, 3, 4)
Como você pode ver, adicione um número antes do parâmetro formal *
, que pode aceitar qualquer número de parâmetros reais e converta todos os parâmetros reais em uma tupla.
Observe que, se houver outros argumentos posicionais ou palavras-chave, precisamos *args
colocá-los após os outros parâmetros formais.
7. Passe qualquer número de argumentos de palavra-chave
Se quisermos aceitar qualquer número de argumentos, mas não sabemos que tipo de informação é passada para a função. As funções podem ser escritas para aceitar qualquer número de pares chave-valor.
Os exemplos são os seguintes:
def build_profile(first_name,last_name,**user_name):
user_name['first_name'] = first_name
user_name['last_name'] = last_name
return user_name
user_profile = build_profile('deng','chao',location = 'princeton',field = 'physics')
print(user_profile)
{
'location': 'princeton', 'field': 'physics', 'first_name': 'deng', 'last_name': 'chao'}
Ao definir a função, adicionei dois antes do parâmetro formal user_name **
.A função deste é armazenar os parâmetros subseqüentes no dicionário user_name na forma de pares chave-valor, e este dicionário também pode ser acessado dentro da função.user_name.