pythonの関数呼び出し元がデフォルトパラメータの一部を順番に提供しない機能とphpとの違いをメモします.

1733 ワード

今日pythonの関数セクションを見ると、pythonの関数には、関数呼び出し元がデフォルトのパラメータの一部を順番に提供しないことをサポートする実用的な特性があることがわかります.一般的なオプションパラメータ付き関数と呼び出しは次のとおりです.
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はこれをサポートしません.
参照:関数のパラメータ