def valid_month(month):
if month:
cap_month = month.capitalize()
if cap_month in months:
return cap_month
if
在第二行的作用是什么?它会检查是否存在参数吗?
答案 0 :(得分:4)
在python中,空字符串或空列表或集合等都是布尔上下文中的False
,布尔上下文中None
也是False
(数字0也是False) )(即在if语句中使用时),检查if month:
,检查月份是不是None
还是month
不是空字符串(我猜月是字符串,因为你调用capitalize()
就可以了。)
仅当月份不为空且月份不是“无”时,才会执行if
内的语句。
显示此行为的示例 -
>>> s = ''
>>> if not s:
... print("Blah")
...
Blah
>>> s = 'abcd'
>>> if s:
... print("Blah1")
...
Blah1
>>> s = ''
>>> if s:
... print("Will not print")
...
>>> s = None
>>> if s:
... print("Will not print")
Python Truth value testing的参考。
答案 1 :(得分:3)
第if month:
行是Truth Value Test。
这意味着它检查变量month
是否其中一个值:
None
False
任何数字类型的零,例如
0
,0.0
,0j
(如果是Python 2.7,则为0L
。任何空序列,例如
''
,()
,[]
。任何空映射,例如
{}
。用户定义类的实例,如果类定义了
__nonzero__()
或__len__()
方法,则该方法返回整数零或bool
值False
答案 2 :(得分:1)
根据您的示例程序:
def valid_month(month):
if month:
cap_month = month.capitalize()
if cap_month in months:
return cap_month
如果月份是列表:
valid_month
if
检查月份是否为空列表,然后您在列表中使用了函数capitalize()
并获取值if
中,您正在检查列表中是否存在该值并将其返回如果月份是字符串:
valid_month
if
检查月份是否为空字符串,然后您在字符串上使用了函数capitalize()
来大写月份if
中,您正在检查输入月份中是否存在大写月份并将其返回答案 3 :(得分:0)
if
语句用于验证参数(即检查它是否为空)。