Python3 函数用法详解:定义、调用方式与作用域管理

Ruby
Ruby
发布时间:2026-10-12| 4人浏览过
原创

本文系统梳理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基础编程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。