if跟随函数参数的作用是什么?

时间:2015-07-13 06:21:39

标签: python

def valid_month(month):
    if month:
        cap_month = month.capitalize()
        if cap_month in months:
            return cap_month

if在第二行的作用是什么?它会检查是否存在参数吗?

4 个答案:

答案 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

  •   
  • 任何数字类型的零,例如00.00j(如果是Python 2.7,则为0L

  •   
  • 任何空序列,例如''()[]

  •   
  • 任何空映射,例如{}

  •   
  • 用户定义类的实例,如果类定义了__nonzero__()__len__()方法,则该方法返回整数零或boolFalse

  •   

答案 2 :(得分:1)

根据您的示例程序:

def valid_month(month):
    if month:
        cap_month = month.capitalize()
        if cap_month in months:
            return cap_month

如果月份是列表:

  1. 将月份列表传递给函数valid_month
  2. 第一个if检查月份是否为空列表,然后您在列表中使用了函数capitalize()并获取值
  3. 在第二个if中,您正在检查列表中是否存在该值并将其返回
  4. 如果月份是字符串:

    1. 字符串月份传递给函数valid_month
    2. 第一个if检查月份是否为空字符串,然后您在字符串上使用了函数capitalize()来大写月份
    3. 在第二个if中,您正在检查输入月份中是否存在大写月份并将其返回

答案 3 :(得分:0)

if语句用于验证参数(即检查它是否为空)。