zoukankan      html  css  js  c++  java
  • python 缩进问题

    介绍

    在python中认为规定4个空格缩进,缩进的代码可以理解成一个块,但是使用缩进也需要注意有时不一样的缩进产生的结果会不一样,接下来就来看一个列子
     
     
    一、for...in循环 
    例:自定义一个函数 ,最后返回传入值的平方相加
    def calc(numbers):
        sum = 0
        for n in numbers:
            sum = sum + n * n
        return sum
    print (calc([1,2,4]))
    上面的代码返回了正常在值:21
     
    接下来把代码稍微改一下
    def calc(numbers):
        sum = 0
        for n in numbers:
            sum = sum + n * n
            return sum
    print (calc([1,2,4]))

    现在返回的值又是什么呢:结果返回1

    为什么会返回1,仔细分析一下,代码我将return进行了缩进,这时return是基于for的每一个循环返回一个值,并且return当第一个条件满足时就不在往下执行了,所以当传入第一个1时,sum=0+1*1=1,return 1就不再进行后面的循环了。而return不缩进那么return和for是同一级,当所有的for执行完后才执行return然后返回最终的结果

    用将return替换成print更容易理解

    def calc(numbers):
        sum = 0
        for n in numbers:
            sum = sum + n * n
        print (sum)
    print (calc([1,2,4]))
    21
    None
    >>> 

    而缩进print

    def calc(numbers):
        sum = 0
        for n in numbers:
            sum = sum + n * n
            print (sum)
    print (calc([1,2,4]))
    1
    5
    21
    None
    >>> 

    由于prInt不像return不会满足条件就不往下执行,所以打印出了每一次循环的值。

    二、if..else

    在if..else条件判断中,一个块里面的语句都要保持缩进

    def my_abs(x):
        if x>=0:
            x=x-1
            return (x)
        else:
            x=x+1

    在这里return就必须缩进,如果和if保持一样的话会导致后面的else定义失败,因为if...elif..else需要保持一致缩进。

    如果这样写就错了:

    def my_abs(x):
        if x>=0:
            x=x-1
        return (x)
        else:
            x=x+1

    由于return和if..else处于一样的缩进,导致else关联不上if

    总结

     使用缩进要明白每一行缩进的意义,否则返回的结果可能不是正确的结果

    备注:

        作者:pursuer.chen

        博客:http://www.cnblogs.com/chenmh

    本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

    《欢迎交流讨论》

  • 相关阅读:
    hdu4841 圆桌问题[STL vector]
    hdu1002 A + B Problem II[大数加法]
    hdu1501 Zipper[简单DP]
    C语言学习之结构体
    C++学习之从C到C++
    一键自动格式化你的代码
    C标准库string.h中几个常用函数的使用详解
    Jlink使用技巧系列教程索引
    Jlink使用技巧之合并烧写文件
    Jlink使用技巧之烧写SPI Flash存储芯片
  • 原文地址:https://www.cnblogs.com/chenmh/p/5689305.html
Copyright © 2011-2022 走看看