2016-11-13 3 views
0

Есть ли способ проверить существование аргумента функции с помощью инструкции assert?Аргумент существования с помощью инструкции assert в python

def fractional(x) : 
    assert x==None, "argument missing" <---- is it possible here to check? 
    assert type(x) == int, 'x must be integer' 
    assert x > 0 , ' x must be positive ' 
    output = 1 
    for i in range (1 , int(x)+1) : 
     output = output*i 
    assert output > 0 , 'output must be positive' 
    return output 
y=3 
fractional() <----- argument missing 

ответ

1

Вы не должны явно заявлять о существовании аргумента. если аргумент не задан при вызове функции, вы получите TypeError как:

>>> def foo(x): 
...  pass 
... 
>>> foo() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: foo() takes exactly 1 argument (0 given) 
>>> 

, если вы хотите, чтобы обеспечить другие свойства аргумента (вы упомянули только существование), вы можете проверить эти свойства и вызывают исключения, если они не были выполнены:

>>> def foo(x): 
... if not isinstance(x, str): 
...  raise ValueError("argument must be a string!") 
... 
>>> foo(42) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<stdin>", line 3, in foo 
ValueError: argument must be a string! 
>>>