美文网首页程序员
python函数参数踩过的坑

python函数参数踩过的坑

作者: 愤怒的小猥琐 | 来源:发表于2018-04-09 22:03 被阅读0次

    在那些卑微的日子里,不敢去仰望星空的浩瀚,不敢去触碰人间的静好,不敢去凝望高山的雄壮,不敢去期待流水的细长。

    最近在用python做运维模块,跟着廖老师的基础教程又重新学了一遍基础,发现函数参数这部分之前忽略了不少,在这里做个笔记记录下

    函数中含有可变参数

    1.写法一

    def init_params(list):
        print(list[0])
    if __name__ == '__main__':
        list = [1, 2, 3, 4]
        init_params(list)
    >>> 1
    
    1. 写法二
    def init_params(*list):
        print(list[0])
    if __name__ == '__main__':
        list = [1, 2, 3, 4]
        init_params(*list)
    

    踩过的坑

    1. 上面加符号下面忘了加符号
    def init_params(*list):
        print(list[0])
    if __name__ == '__main__':
        list = [1, 2, 3, 4, 5]
        init_params(list)
    

    这个时候,你会发现输出是这样的:
    [1,2,3,4,5]

    1. 上面没加符号,下面加了符号
    def init_params(list):
        print(list[0])
    if __name__ == '__main__':
        list = [1, 2, 3, 4, 5]
        init_params(*list)
    

    这个时候,代码会报错:


    错误提示.png

    错误原因

    python函数中,如果参数带了 * 号,python会默认这个参数是可选参数,也可以这样理解,不加 * 号是一个参数,加上 * 号是一个对象,所以第一个坑就很显然了,list被认为方法中唯一一个参数,所以会把所有参数都打印,第二个坑方法中需要一个参数,你却给了一个对象(对象可以包含很多参数),所以会报错

    后话

    遇见这种问题,你心里肯定好多句MMP,但是程序员不写出各种各样让人无法维护的BUG又怎样能体现自己的价值呢?


    哈哈哈.png

    相关文章

      网友评论

        本文标题:python函数参数踩过的坑

        本文链接:https://www.haomeiwen.com/subject/qqqwhftx.html