python函数参数踩过的坑

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

最近在用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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 19,066评论 17 410
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,201评论 0 13
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,238评论 4 16
  • 混混沌沌的生活又继续。 厌了抽屉里的指甲油,借了舍友的一支,拔出刷子的时候带出细密的金闪,把一整天的坏心情都刷掉了...
    待绽放阅读 367评论 0 0
  • 头疼,眼睛疼,呼吸道干燥。昨天实验室那边毒气泄露了,但是没有人通知我们疏散。这种气体会刺激眼睛,呼吸道粘膜,严重时...
    樾木阅读 252评论 0 0