欢迎光临
我们一直在努力

Python函数入门之函数的参数和变量作用范围

一、函数的参数

1.形参和实参

创建函数可以设置函数接收多个参数,其中定义函数中的参数被称为形参(形式参数),调用函数时填入的参数被称为实参(实际参数)。它们的使用形式为:

关于实参与形参有以下5点有关其使用形式的描述:

(1)形参使用变量名来接收实参传递过来的信息,因此形参1、形参2都为变量名。

(2)在创建函数时,需要确定函数需要处理的数据有哪些,从而确保形参的个数。

(3)当函数需要接收多个形参时,形参之间要使用逗号隔开。

(4)调用函数中的实参为实际数据,且实参的个数要和形参的个数相同。

(5)调用函数时会按照顺序依次将所有实参的数据复制给形参。

如图:

2.默认参数

在通常情况下,定义函数中的某些参数会填入相同的数据,这时可以给参数设置默认参数,即提前给参数设置一个数据。它的使用形式为:

关于给定义函数设置默认参数前有以下3点有关其使用形式的描述:

(1)在定义函数的形参中,“形参2=数据2”表示将数据2(数据2为具体的一个数据值)赋值给形参2,形参2也被称为默认参数。

(2)默认参数的功能是当调用函数没有填入实参2的数据时,形参2默认填入数据2的值。在每次调用函数时,如果填入的形参数据值都是固定的,可以将此形参设置为默认参数,而相应实参则不用再填入数据值。

(3)当调用函数传递了实参2的数据值时,实参2的数据值将覆盖数据2的值。

如图:

当形参中有默认参数和必填参数时,需要先写必填参数,再写默认参数。其中必填参数指调用函数中必须要填入的参数,例如在以上代码中,形参r是必填参数,因此不能将形参r的位置和pi的位置互换,否则会引发语法错误。因为在调用函数时,程序会按顺序依次将填入的实参与形参进行匹配。不过可以通过指定形参名称的方式来避免数据传递出错。

3.可变参数

不确定函数中需要接收的参数个数时,可以使用可变参数。在形参前加入一个*即可将其转换为可变参数。它的使用形式为:def 函数名(形参1,*形参2):。

关于使用可变参数前有以下3点有关其使用形式的描述:

(1)可变参数的形参使用*开头。

(2)可变参数必须位于必填参数的右边以保证必填参数先接收到数据,再将剩余的数据传递给可变参数。

(3)可变参数以元组的形式接收数据。

如图:

4.关键字参数

可变参数以元组的形式存储接收到的数据,而关键字参数以字典的形式存储接收到的数据。

关键字的使用形式为:def 函数名(形参1,**形参2):

关于使用关键字参数前有以下4点有关其使用形式的描述:

(1)关键字参数的形参使用**开头。

(2)关键字参数必须位于必填参数的右边,从而保证必填参数会先接收到数据,再将剩余数据传递给关键字参数。

(3)关键字参数以字典的形式接收数据。

(4)传递给关键字参数的数据包含键和值,其中键和值之间使用等号连接。

如图:

二、函数的变量作用范围

根据以前对变量的认识,当变量被赋值后,在后续的代码中都可使用该变量,但在函数内部不能随意使用主代码程序中的变量。根据变量的作用范围可以将变量分为全局变量和局部变量。全局变量指变量在整个代码文件内都可以被使用,局部变量指变量只能在局部范围内被使用。函数中的形参变量和函数内部代码块中的变量都是局部变量。如图:

由于变量只能在fun5()函数内部使用,所以执行print(a)会报错。定义函数fun5()中创建了一个变量d,变量d也属于局部变量,只能在fun5()函数内部使用。

1.函数中使用全局变量存在的问题

当在函数中使用全局变量且对全局变量进行了赋值时,将会重新在函数内部创建一个新的局部变量,而不是直接使用全局变量。如图:

2.global声明全局变量

如果需要在函数外部和函数内部都使用同一个变量(不会因为在函数内部而被重新赋值),可以在函数中使用global关键字对变量进行声明。如图:

3.变量为可变数据

Python中根据是否会改变内存空间可将数据分为可变数据和不可变数据,其中可变数据是指数据变化后不会改变内存空间。在Python中任何一个变量在运行过程中都会在内存中开辟一个空间来存储变量对应的数据值,用户可以通过id()函数获取当前变量的数据值所在的内存空间编号。如图:

4.函数中的可变数据

当可变数据为全局变量时,在函数中对可变数据进行修改会改变全局变量。

如图:

该结果表明函数内部输出的a和函数外部输出的a是相同的,即它们实际上是同一个变量。

由于代码中调用了两次func()函数,但变量a和b获取的都是ls中的内容(即同一个内存空间的内容),因此最终输出的结果不是[1] [1,1]。

赞(0)
未经允许不得转载:171主机测评 » Python函数入门之函数的参数和变量作用范围
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址