Python3 函数用法详解:定义、调用方式与作用域管理
本文系统梳理Python3中函数的核心用法,涵盖标准定义语法、作用域规则及常见调用方式。通过位置参数、关键字参数、默认实参、可变参数(*args/**kwargs)与解包技术的对比实例,提供可运行的完整代码示例,帮助开发者准确掌握函数创建、调用逻辑与模块化编程技巧。
函数定义与基础结构
函数是组织好的、可重复使用的功能代码段。Python 使用 def 关键字定义函数,后接函数名与圆括号包裹的参数列表。函数体以冒号起始并严格缩进,可包含可选的文档字符串与返回值。
def 函数名(参数列表):
"""文档字符串"""
函数体
return [expression]
参数列表、文档字符串与 return 语句均为可选。示例如下:
def fib(n):
"""Print a Fibonacci series"""
a, b = 0, 1
while b < n:
print(b, end=' ')
a, b = b, a+b
print()
fib(2000) # call
f = fib # assignment
f(2000)
函数名的值为自定义函数类型,可赋值给其他变量作为函数引用。
变量作用域与声明规则
在函数内部定义的变量属于局部作用域,在函数外部定义的属于全局作用域。函数内部可以读取全局变量,但直接赋值会创建新的局部变量;若需修改全局变量,必须使用 global 关键字显式声明。
a = 5 # 全局变量a
def func1():
print('func1() print a =', a)
def func2():
a = 21 # 局部变量a
print('func2() print a =', a)
def func3():
global a
a = 10 # 修改全局变量a
print('func3() print a =', a)
func1()
func2()
func3()
print('the global a =', a)
函数调用实操顺序
第1步:位置参数与关键字参数匹配
常规调用要求实参数量与形参一致,并按顺序一一对应。也可使用 keyword=value 形式指定关键字参数,此时参数顺序不再受限。
def fun(name, age, gender):
print('Name:',name,'Age:',age,'Gender:',gender,end=' ')
print()
fun('Jack', 20, 'man') # 位置参数
fun(gender='man', name='Jack', age=20) # 关键字参数
第2步:默认实参与可变参数接收
为形参指定默认值后,调用时可省略该参数。若默认值为可变对象(如列表),注意其会在多次调用间共享状态。可变参数通过单星号 *args 接收任意数量位置实参(包装为元组),双星号 **args 接收任意数量关键字实参(包装为字典)。
# 默认参数示例
def fun(a, b, c=5):
print(a+b+c)
fun(1,2)
fun(1,2,3)
# 可变参数示例
def fun(*args):
print(type(args))
print(args)
fun(1,2,3,4,5,6) # <class 'tuple'> (1, 2, 3, 4, 5, 6)
def fun(**args):
print(type(args))
print(args)
fun(a=1,b=2,c=3,d=4,e=5) # <class 'dict'> {'d': 4, 'e': 5, 'b': 2, 'c': 3, 'a': 1}
第3步:序列与字典解包调用
可使用单星号与双星号对列表、元组与字典进行解包,将元素拆分后传递给对应形参。* 用于解包序列(位置参数),** 用于解包字典(关键字参数)。
def fun(a=1, b=2, c=3):
print(a+b+c)
fun()
list1 = [11, 22, 33]
dict1 = {'a':40, 'b':50, 'c':60}
fun(*list1) # 66
fun(**dict1) # 150
匿名函数与文档说明
lambda 关键词用于创建小型匿名函数,仅支持单一表达式且能接收任意数量参数。
f = lambda x, y: x+y
print(f(10, 20))
def make_fun(n):
return lambda x: x+n
f = make_fun(15)
print(f(5))
文档字符串(docstring)置于函数体首行,使用三引号包裹。可通过 function.__doc__ 查看或交互浏览,建议养成添加规范文档的习惯。
def fun():
"""Some information of this function.
This is documentation string."""
return
print(fun.__doc__)
完成判断与注意事项
- 代码执行无报错且控制台输出符合预期结果,表示定义、调用与作用域控制正确。
- 避免将可变对象(列表、字典等)直接用作默认参数,防止状态意外累积。
lambda表达式仅限简洁逻辑,复杂流程仍建议使用def配合标准文档字符串。
总结
以上就是Python3函数用法的具体讲解,更多关于Python基础编程的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









