函数
示例:
函数头之后的第一个字符串称为docstring,是文档字符串的缩写。简要说明了函数的作用。
通常使用三引号将文档字符串扩展为多行。该字符串可作为__doc__函数的属性供我们使用。
return语句
用于退出函数并返回到调用函数的位置。
我们把上面写的greet函数输出一下,发现会有一个None,因为greet函数没有return语句,默认返回None对象
示例:
变量的作用域和生命周期
变量的作用域是程序中可以识别该变量的部分。从函数外部看不到在函数内部定义的参数和变量。因此,它们具有本地作用域。
变量的生命周期是变量在内存中退出的时间。函数内部变量的生命周期与函数执行的时间一样长。
示例:
【可以看到x的初始值为20。即使函数my_func()将x的值更改为10,它也不会影响函数外部的值。这是因为函数内部的变量x与函数外部的x变量不同。尽管它们具有相同的名称,但是它们是两个具有不同作用域的不同变量。】
我们可以从函数内部读取这些值,但不能更改(写入)它们。如果要在函数外部修改变量的值,必须使用关键字global,将它们声明为全局变量。
参数
多个参数:
如果使用不同数量的参数调用它,会报错
可变的函数参数
默认参数
函数参数可以具有默认值,使用赋值运算符(=)为参数提供默认值。
【参数name没有默认值,那么在调用此函数时,name参数必须要传值。另一方面,该参数msg的默认值为"Good morning!"。因此,在调用函数时可以不传值。如果调用时提供了一个值,它将会覆盖默认值】
函数中的任意数量的参数都可以具有默认值。但是一旦有了默认参数,其右边的所有参数也必须具有默认值。这意味着非默认参数不能跟随默认参数。
【默认参数之后的参数也必须有默认值】
关键字参数
允许使用关键字参数调用函数。当我们以这种方式调用函数时,参数的顺序(位置)可以更改。
任意参数
Python允许我们通过带有任意数量参数的函数调用来处理这种情况。
在参数名称前使用星号(*)表示此类参数
示例:
【在这里,我们调用了带有多个参数的函数。这些参数在传递给函数之前被包装为一个元组。在函数内部,我们使用for循环来取回所有参数。】