Python函数-传递参数和变量作用域
在Python中,函数是一段可以重复调用的程序代码。函数可以接受参数,并且可以有变量作用域。本文将介绍Python函数的参数传递和变量作用域。
一、参数传递
Python函数的参数传递有两种方式:位置参数和关键字参数。
1.位置参数
位置参数是函数参数的默认方式,也是最常见的方式。传递参数时,按照函数定义的形参位置进行对应。
例如:
def add(a, b):
return a + b
print(add(1, 2)) # 3
在这个例子中,a和b是函数的形参,1和2是函数调用时传递的实参。位置参数的优点在于传递简单易懂,容易理解和调试。
2.关键字参数
关键字参数是传递参数时使用形参的变量名作为关键字来对参数进行传递的方式。这种方式在传递参数是可以省略掉一些未使用的参数,使得代码更加整洁。
例如:
def add(a, b):
return a + b
print(add(b=2, a=1)) # 3
在这个例子中,使用了关键字参数,在传递参数时结果不变。关键字参数的优点在于可以省略掉部分未使用的参数,代码更加整洁。
3.默认参数
默认参数是函数定义时为参数声明的初始值。如果实参与形参有相同的关键字,则实参的值会覆盖默认参数的值。
例如:
# 传递默认参数
def add(a=1, b=1):
return a + b
print(add()) # 2
# 覆盖默认参数
print(add(b=2)) # 3
在这个例子中,a=1和b=2是函数定义时为参数声明的初始值,如果实参与形参有相同的关键字,实参的值会覆盖默认参数的值。默认参数优点在于当大部分调用都为该默认值时,可以省略实参。
4.不定长参数
不定长参数是传递不确定个数的参数,有两种:*args和**kwargs。其中*args表示传递不定个位置参数,**kwargs表示传递不定个关键字参数。
例如:
#传递不定个位置参数
def add(*args):
sum = 0
for n in args:
sum = sum + n
return sum
print(add(1, 2, 3)) # 6
#传递不定个关键字参数
def add(**kwargs):
sum = 0
for n in kwargs.values():
sum = sum + n
return sum
print(add(a=1, b=2, c=3)) # 6
在这个例子中,*args和**kwargs分别表示传递不定个位置参数和关键字参数。
二、变量作用域
在Python函数中,变量的作用域分为全局变量和局部变量。
1.全局变量
全局变量是定义在代码块外的变量。全局变量可以在函数内被访问和修改,但是需要注意修改全局变量时需要在函数中使用global关键字,否则会被视作局部变量。
例如:
a = 1
def changeA():
global a
a = 2
changeA()
print(a) # 2
在这个例子中,使用global关键字来改变全局变量a的值。
2.局部变量
局部变量是定义在函数内部的变量,只能在对应的函数内部被访问和修改。局部变量的作用域只在函数内部,离开函数后就不存在。
例如:
def changeA():
a = 2
return a
print(changeA()) # 2
在这个例子中,a是局部变量,只能在函数内部访问和修改。
总结:
本文介绍了Python中函数的参数传递和变量作用域,其中参数传递包括位置参数、关键字参数、默认参数和不定长参数,变量作用域包括全局变量和局部变量。在使用函数时,合理选择不同的参数传递方式和变量作用域能够使代码更加方便和高效。
