跟着菜鸟学python--函数和参数讲解

微信公众号:
跟着菜鸟学python--函数和参数讲解_第1张图片

函数的定义

    • 默认值参数
    • 默认参数的陷阱
    • 关键字参数
    • 可变参数

我们先来看看官方是怎么定义函数的
定义 函数使用关键字 def,后跟函数名与括号内的形参列表。函数语句从下一行开始,并且必须缩进。

为什么要有函数呢?
在我们写代码的时候如果从头写到尾其实也没问题,但是如果随着时间拉长,代码越来越多,这个时候就变得极其的难维护,而且如果我有的地方需要重复的引用一些功能,我也要重复的去写,这样非常的浪费时间。
例如我现在需要实现一个加法功能:我只用定义一个函数,函数里返回数字相加即可,后面我需要再次使用的时候调用add()就行。
return 语句返回函数的值。return 语句不带表达式参数时,返回 None
在这里插入图片描述
注:函数在 执行 时使用函数局部变量符号表,所有函数变量赋值都存在局部符号表中;引用变量时,首先,在局部符号表里查找变量,然后,是外层函数局部符号表,再是全局符号表,最后是内置名称符号表。因此,尽管可以引用全局变量和外层函数的变量,但最好不要在函数内直接赋值(除非是 global 语句定义的全局变量,或 nonlocal 语句定义的外层函数变量)。
关于函数的命名空间我们后面再讲

默认值参数

定义函数的时候,我们可以在函数名()中去定义默认额参数,如果不是传值的话,默认就显示的是定义的值
这里用到了另外一个东西叫f-string 字符串的格式化
在这里插入图片描述
我们还可以这样写,传递自己想传的值,是不是很方便
在这里插入图片描述
注意:我们在定义函数的时候,参数是叫做形参,调用的时候,参数叫做实参

默认参数的陷阱

默认值只计算一次。默认值为列表、字典或类实例等可变对象时,会产生与该规则不同的结果。例如,下面的函数会累积后续调用时传递的参数
跟着菜鸟学python--函数和参数讲解_第2张图片
所以在定义的时候不要去定义可变的类型,解决方法如下:
跟着菜鸟学python--函数和参数讲解_第3张图片

关键字参数

关键参数形式为:key=value 用于调用函数
函数调用时,关键字参数必须跟在位置参数后面。所有传递的关键字参数都必须匹配一个函数接受的参数(比如,hight 不是函数 user_info的有效参数),关键字参数的顺序并不重要。这也包括必选参数,(比如,user_info(name=‘jack’) 也有效)。
跟着菜鸟学python--函数和参数讲解_第4张图片
不能对同一个参数多次赋值
在这里插入图片描述

可变参数

*args,**kwargs:名字可以自定义,一般是默认这样写
我们可以看下,定义函数的时候,定义2个字样的参数,如果我们什么都不传,打印出来的其实就是元祖和字典,那么就很明显了,我们传参的时候,就要根据这个规则去传
跟着菜鸟学python--函数和参数讲解_第5张图片
如下:
跟着菜鸟学python--函数和参数讲解_第6张图片
这个也可以作为实参时使用
在这里插入图片描述

你可能感兴趣的:(python,python)