Tipos de parâmetro de função Python e habilidades de uso

Vamos primeiro definir uma função para calcular o índice de massa corporal (IMC). O índice de massa corporal é a relação entre o peso e o quadrado da altura, onde o peso está em quilogramas e a altura em metros.

>>> def bmi(height, weight, name):
	i = weight/height**2
	print('%s的体重指数为%0.1f'%(name, i))

	
>>> bmi(1.75, 75, 'Xufive')
Xufive的体重指数为24.5

A função personalizada bmi tem três parâmetros e cada parâmetro tem um significado claro. Ao chamar esta função, estes três parâmetros devem ser passados ​​na ordem definida, nenhum dos quais é indispensável. Esta também é a regra de passagem de parâmetro mais básica para funções Python.

Em seguida, modifique um pouco a função bmi e especifique um valor padrão para o parâmetro de nome.

>>> def bmi(height, weight, name='您'):
	i = weight/height**2
	print('%s的体重指数为%0.1f'%(name, i))

	
>>> bmi(1.75,75) # 可以不传递name参数,使用默认值
您的体重指数为24.5
>>> bmi(1.75,75,'Xufive') # 也可以传递name参数
Xufive的体重指数为24.5

Agora, a função bmi tem dois tipos de parâmetros: peso e altura, que são parâmetros indispensáveis ​​quando a função é chamada, e a ordem deve ser consistente com a definição da função. Esses parâmetros são chamados 位置参数; o nome é opcional quando a função é chamada Parâmetros opcionais (se não fornecidos, o valor padrão é usado), tais parâmetros são chamados 默认参数. Pode haver vários parâmetros padrão.

Para tornar os resultados mais precisos, você pode considerar o uso da média de vários pesos no período mais recente para calcular o índice de massa corporal, o que significa que você precisa inserir vários valores de peso. Claro, podemos passar uma tupla ou lista de peso para peso, mas desta forma peso e altura não são o mesmo tipo.A estética se perde na forma, e é fácil entender mal ao usá-la. A melhor maneira é permitir que a função aceite um número indeterminado de parâmetros de peso.

>>> def bmi(height, *args, name='您'):
	i = (sum(args)/len(args))/height**2
	print('%s的体重指数为%0.1f'%(name, i))

	
>>> bmi(1.75, 75, name='xufive')
xufive的体重指数为24.5
>>> bmi(1.75, 75, 74)
您的体重指数为24.3
>>> bmi(1.75, 75, 74, 75.5, 74.7, name='xufive')
xufive的体重指数为24.4

Na verdade, não há problema em chamar funções como as seguintes.

>>> weight = [75, 74, 75.5, 74.7]
>>> bmi(1.75, *weight, name='xufive')
xufive的体重指数为24.4

Isso é um pouco mais complicado. A função bmi tem três tipos de parâmetros. Além dos parâmetros posicionais e dos parâmetros padrão, existe mais um 可变参数, ou seja , a função bmi pode aceitar um número ilimitado de parâmetros. Quando a função é definida, o nome do parâmetro variável é prefixado com "*"; no corpo da função, o parâmetro variável é equivalente a uma tupla.

Como resultado, surge uma nova questão: em que ordem os três tipos de parâmetros devem ser definidos? Não há objeções à classificação dos parâmetros posicionais em primeiro lugar. Em princípio, o parâmetro padrão é colocado por último, mas o nome do parâmetro deve ser adicionado ao chamar (como no exemplo acima), caso contrário, a função não pode distinguir se é um parâmetro variável ou um parâmetro padrão. O parâmetro padrão também pode ser colocado antes do parâmetro variável (isso não é recomendado), mas o nome do parâmetro não pode ser usado ao chamar, mesmo se o valor padrão for usado, o parâmetro não pode ser omitido, caso contrário, a função usará o primeiro valor do parâmetro da variável subsequente (se houver, é forçado a atribuir um valor.

Vamos falar sobre situações mais complicadas. Além dos acima descritos três tipos de parâmetros, Python suporta um quarto tipo de parâmetros de funções: 关键字参数. Os parâmetros de palavra-chave consistem em um número ilimitado de pares de valores-chave. Quando a função é definida, o nome do parâmetro de palavra-chave é prefixado com "**"; no corpo da função, o parâmetro de palavra-chave é equivalente a um dicionário.

>>> def bmi(height, *args, name='您', **kwds):
	i = (sum(args)/len(args))/height**2
	print('%s的体重指数为%0.1f'%(name, i))
	for key in kwds:
		print('%s的%s是%s'%(name, key, str(kwds[key])))

		
>>> bmi(1.75, 75, 74, 75.5, 74.7, name='Xufive')
Xufive的体重指数为24.4
>>> bmi(1.75, 75, 74, name='Xufive', 性别='男', 爱好='摄影')
Xufive的体重指数为24.3
Xufive的性别是男
Xufive的爱好是摄影
>>> bmi(1.75, 75, 74, 性别='男', 爱好='摄影', name='Xufive')
Xufive的体重指数为24.3
Xufive的性别是男
Xufive的爱好是摄影
>>> bmi(1.75, 75, 74, 75.5, 74.7, 性别='男', 爱好='摄影')
您的体重指数为24.4
您的性别是男
您的爱好是摄影

Se uma função tiver os quatro tipos de parâmetros acima ao mesmo tempo, a ordem correta dos parâmetros ao definir a função deve ser parâmetros posicionais em primeiro lugar, parâmetros variáveis ​​em segundo, parâmetros padrão novamente e parâmetros de palavra-chave no final. Quando a função é chamada, se você precisar especificar o parâmetro padrão, o nome do parâmetro não pode ser omitido, a posição é após o parâmetro da variável, pode ser antes ou depois do parâmetro da palavra-chave ou pode ser misturado.

Acho que você gosta

Origin blog.csdn.net/xufive/article/details/115298728
Recomendado
Clasificación