目录
正文
一.函数的定义和调用。
1.定义函数。
2.调用函数。
函数在定义完成后不会立即执行,直到被程序调用后才会立即执行,调用函数的语法格式:函数名([参数列表])。
注意:函数外部无法直接调用内层函数,只能在外层函数中调用内层函数。
二.函数参数的传递。
1.位置参数的传递。
函数在被调用时会将实参按照相应的位置依次传递给形参,即将第1个实参传递给第1个形参,将第2个实参传递给第2个形参,以此类推。
2.关键字参数的传递。
关键字参数的传递是通过“形参=实参”的格式将实参与形参相关联,将实参按照相应的关键字传递给形参。
3.默认参数的传递。
函数在定义时可以指定形参的默认值,故在被调用时可以选择是否给带有默认值的形参传值,若没有给带有默认值的形参传值,则直接使用该形参的默认值。
三。变量的作用域。
1.局部变量。
①局部变量是指在函数内部定义的变量,他只能在函数内部被使用,函数执行结束之后局部变量会被释放,此时无法进行访问。
②不同函数内部可以包含同名的局部变量,他们相互独立,互不影响。
2.全局变量。
全局变量可以在整个程序范围内起作用。
注意:全局变量在函数内部只能被访问,而无法直接修改。
四.global和nonlolcal关键字。
函数内部无法直接修改全局变量或在嵌套函数的外层函数声明的变量,但可以使用global或 nonlocal 关键字修饰变量以间接修改以上变量。
1.global 关键字。
使用 global关键字可以将局部变量声明为全局变量,格式如下:global 变量。示例如下:
number = 10
def test():
global number
number +=1
print(number)
test()
print(number)
2.nonlocal关键字。
使用该关键字可以在局部作用域中修改嵌套作用域中声明的变量,格式如下:nonlocal 变量。示例如下:
def test():
number = 10
def test_in():
nonlocal number
number = 20
test_in()
print(number)
test()
五.特殊形式的函数。
1.递归函数。
递归函数的一般定义格式如下:
递归最经典的应用是阶乘。下面编写代码实现n!的求解:
def func(num):
if num == 1:
return 1
else:
return num * func(num - 1)
num = int(input("请输入一个整数:"))
result = func(num)
print(f"{num}的阶乘是{result}")
2.匿名函数。
匿名函数是一类无须定义标识符的函数,它与普通函数一样可以在程序的任何位置使用。Python中使用lambda关键字定义匿名函数,语法格式如下:lambda<形式参数列表>:<表达式>。
结合以上语法格式可知,匿名函数与普通函数主要有以下区别。
(1)普通函数在定义时有名称,而匿名函数没有名称。
(2)普通函数的函数体中包含多条语句,而匿名函数的函数体只能是一个表达式。
(3)普通函数可以实现比较复杂的功能,而匿名函数可实现的功能比较简单。
(4)普通函数能被其他程序使用,而匿名函数不能被其他程序使用。
定义好的匿名函数不能直接使用,最好使用一个变量保存它,以便后期可以随时使用这个函数。例如,定义一个计算数值平方的匿名函数,并赋值给一个变量,具体代码如下:
#定义匿名函数,并将它返回的函数对象赋值给变量temp
temp=lambda x:pow(x,2)
此时,变量temp可以作为匿名函数的临时名称来调用函数,示例:print(temp(10))。