pythonの関数呼び出し元がデフォルトパラメータの一部を順番に提供しない機能とphpとの違いをメモします.
1733 ワード
今日pythonの関数セクションを見ると、pythonの関数には、関数呼び出し元がデフォルトのパラメータの一部を順番に提供しないことをサポートする実用的な特性があることがわかります.一般的なオプションパラメータ付き関数と呼び出しは次のとおりです.
ただし、複数のオプションパラメータがあり、関数呼び出し元がオプションパラメータの値を順番に提供したくない場合、または一部のオプションパラメータの値だけを順番に提供しない場合は、どうすればいいですか?
stuinfo関数には2つのオプションパラメータがあり、順にage、cityの順ですが、呼び出し元がageを提供したくない場合、cityを伝えたい場合、pythonはできますか?答えは肯定的で、私たちはこのようにdemoが結果を得ることを許可します.
pythonは確かに柔軟で便利で、万能のphpではできないと思います.
実行結果:
説明:phpは、デフォルトパラメータの一部の値を提供し、順序で提供しない場合はサポートされません.上記の例では、getnums関数の2つのデフォルトパラメータの順序は$b,$cであるが、関数呼び出し側が$bを提供したくない場合、$cのみを提供したい場合、php解析器は依然として提供するパラメータ$c=4を前のデフォルトパラメータ$bに付与し、エラー結果7を4ではなく4にする.
結論:pythonは、この関数呼び出し元が選択可能なパラメータの一部を順番に提供しないことをサポートし、phpはこれをサポートしません.
参照:関数のパラメータ
def power(x, n=2):
if not isinstance(x, (int, float)):
raise TypeError('input param type error, must be a int or float')
res = 1
while n > 0:
res = res * x
n -= 1
return res
print(power(3,2))
print(power(5)) #
ただし、複数のオプションパラメータがあり、関数呼び出し元がオプションパラメータの値を順番に提供したくない場合、または一部のオプションパラメータの値だけを順番に提供しない場合は、どうすればいいですか?
def stuinfo(name, gender, age=6, city='Beijing'):
print('name:', name)
print('gender:', gender)
print('age:', age)
print('city:', city)
stuinfo('minp', 'male', city='shanghai')
stuinfo関数には2つのオプションパラメータがあり、順にage、cityの順ですが、呼び出し元がageを提供したくない場合、cityを伝えたい場合、pythonはできますか?答えは肯定的で、私たちはこのようにdemoが結果を得ることを許可します.
E:\python_study>python 1.py
('name:', 'minp')
('gender:', 'male')
('age:', 6)
('city:', 'shanghai')
pythonは確かに柔軟で便利で、万能のphpではできないと思います.
実行結果:
D:\Program Files (x86)\360\skylar6\php>php 1.php
int(7) # 4, php 。
説明:phpは、デフォルトパラメータの一部の値を提供し、順序で提供しない場合はサポートされません.上記の例では、getnums関数の2つのデフォルトパラメータの順序は$b,$cであるが、関数呼び出し側が$bを提供したくない場合、$cのみを提供したい場合、php解析器は依然として提供するパラメータ$c=4を前のデフォルトパラメータ$bに付与し、エラー結果7を4ではなく4にする.
結論:pythonは、この関数呼び出し元が選択可能なパラメータの一部を順番に提供しないことをサポートし、phpはこれをサポートしません.
参照:関数のパラメータ