[英]How to check arguments passed to the function call are empty?
我希望該函數簡單地檢查是否傳遞了參數。 如果沒有,打印一些東西,否則打個招呼和那個論點。
這是我的代碼示例:
def say_name(name):
if name is None:
print("Hello there")
else:
print("Hello, "+ name + "!")
運行代碼:
class Test(unittest.TestCase):
def test_should_say_hello(self):
self.assertEqual(say_name("Michael"), "Hello, Michael!")
我已經嘗試使用None
, Kwargs 並且仍然無法正常工作。 如何檢查參數是否傳遞給函數?
要使參數成為可選參數,請為其分配默認值:
def say_name(name=None):
if name is None:
print("Hello there")
else:
print("Hello, "+ name + "!")
附錄:正如 Barmar 在對您的問題的評論中指出的那樣,您的函數需要返回一個字符串才能使您的檢查工作。
def say_name(name=None):
if name is None:
return "Hello there"
else:
return "Hello, "+ name + "!"
檢查函數調用是否傳遞了“任何”參數
通常,為了檢查是否傳遞了任何參數,您可以使用*args
(用於非關鍵字可變長度參數列表)和**kwargs
(用於關鍵字可變長度參數列表)創建函數。 例如:
def check_argument(*args, **kwargs):
if args or kwargs: # check if any among the `args` or `kwargs` is present
return "Argument Passed!"
else:
return "Argument Not passed!"
樣品運行:
# For "non-keyworded" argument
>>> check_argument('something')
'Argument Passed!'
# For "keyworded" argument
>>> check_argument(some_param='some_value')
'Argument Passed!'
# For no argumenet
>>> check_argument()
'Argument Not passed!'
檢查函數調用是否傳遞了任何“特定”參數
對於您的場景,由於您只關心一個特定的參數name
並根據傳遞的值執行操作,因此您可以為其函數定義分配一個default
值:
# v Default value as `None`
def say_name(name=None):
if name is None:
return "Hello, there!"
else:
return "Hello, "+ name + "!"
上面的函數可以簡化為:
# v setting default name as "there"
def say_name(name="there"):
return "Hello, {}!".format(name)
# Or you may also check it within the format as
def say_name(name=None):
return "Hello, {}!".format(name or "there")
樣品運行:
>>> say_name()
Hello, there!
>>> say_name('StackOverflow')
Hello, StackOverflow!
def say_hello(*name):
if name:
return "Hello, "+name[0]+"!"
else:
return "Hello there!"
這應該工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.