関数内のifステートメントに引数を入力できますか

2020-06-01 python function arguments parameter-passing

例えば

def person(name,if age == 18:...//some instructions and this parameter will be default parameter):
   print(age)
   print(name)

person('Ratheesh')

//私はそれがダンプで愚かに聞こえることを知っていますが、それを行う可能性はありますか?

ユーザーが入力したとおりに引数に正確な値を入力したことを確認しようとしていました...しかし、幸いにもデフォルトの引数を使用してそれを実行しましたが、パラメーター値を変更するたびにオーバーライドされるので、オーバーライドを避けたいです...

Answers

デフォルトのパラメータですか?

def person(name, age=18):
   print(age)
   print(name)

person('Ratheesh')

戻り値:

18
Ratheesh

そして:

person('Ratheesh', 20)

戻り値:

20
Ratheesh

if条件をパラメーターとして使用する理由は何ですか。あなたが達成しようとしていることは何でも、以下のようにコード内のif条件を使用して行うことができます:

def person(name,age):
   if age == 18:
       #some instructions 
   print(age)
   print(name)

person('Ratheesh',10)

あなたの質問に答えるには、 NO 、if条件を引数として渡すことはできません。多分あなたはデフォルトのパラメータ値を入れようとしているなら以下のコードを参照することができます:

def person(name,age=18): #this will set the default value of age to 18 in case it isn't mention in the call
   if age == 18:
       #some instructions 
   print(age)
   print(name)

person('Ratheesh')

これで問題が解決することを願っています!

技術的には、関数のデフォルト引数を定義する式の中にif含めることができますが、関数が定義されたときに式が評価されることに注意してください。

>>> default = "drinking age"
>>> def person(name: str, age: int = 21 if default == "drinking age" else 18):
...     print(name, age)
...
>>> person("Bob")
Bob 21
>>> default = "voting age"
>>> person("Bob")
Bob 21

実際には、このようなことをしたいと思う理由を想像するのは難しいでしょう。関数の本体内でその評価を行う方が理にかなっています。

>>> def person(name: str, age: Optional[int] = None):
...     if age is None:
...         age = 21 if default == "drinking age" else 18
...     print(name, age)
...
>>> person("Bob")
Bob 18
>>> default = "drinking age"
>>> person("Bob")
Bob 21

Related