
函数是用 def 语句来创建的。
Python不允许在函数未声明之前对其进行引用或者调用。
每个Python的模块、类和函数中,都有名字空间。我们可以在模块a和模块b里都保存一个名为x的变量,将这两个模块导入程序后,仍然可以使用这两个变量。因此,即使在两个模块中有相同的变量名字也是安全的,因为句点属性标识对于两个模块意味着不同的命名空间,不会带来名字冲突。
在函数体内创建另外一个函数(对象)是完全合法的。这种函数叫作内嵌函数。
前面介绍过可以使用 Python内置的help()函数查看其他函数的说明文档,我们也经常通过 help() 函数查看指定函数的帮助信息,这对于 Python 开发者来说非常重要。
(1)形式参数。在定义函数时,函数名后面括号中的参数就是形式参数。
(2)实际参数。在调用函数时,函数名后面括号中的参数称为实际参数,也就是函数的调用者给函数的参数。
Python中,根据实参的类型不同,函数参数的传递方式可分为两种,即值传递和引用(地址)传递:
(1)值传递:适用于实参类型为不可变类型(字符串、数字、元组)。
(2)引用(地址)传递:适用于实参类型为可变类型(列表、字典)。
位置参数,有时也称必备参数,指的是必须按照正确的顺序将实际参数传到函数中,换句话说,调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致(实参和形参数量必须一致)。
关键字参数是指使用形式参数的名字来确定输入的参数值。通过此方式指定函数实参时,不再需要与形参的位置完全一致,只要将参数名写正确即可。因此,Python函数的参数名应该具有更好的语义,这样程序可以立刻明确传入函数的每个参数的含义。
在调用函数时,如果不指定某个参数,解释器会抛出异常。为了解决这个问题,Python 允许为参数设置默认值,即在定义函数时,直接给形参指定一个默认值,这样的话,即便调用函数时没有给拥有默认值的形参传递参数,该形参也可以直接使用定义函数时设置的默认值。
Python 定义可变参数主要有以下 3 种形式。
(1)形参前添加一个*。
(2)形参前添加两个*。
(3)逆向参数收集。