Python函数与方法核心机制详解:定义、参数、继承与内置工具

唐可
唐可
发布时间:2026-10-13| 3人浏览过
原创

本文深入解析Python中函数与方法的核心机制。详细阐述函数定义规则、必备与默认参数、不定长参数(*args/**kwargs)及匿名函数(lambda)的用法。探讨类方法继承中super()的应用、Python无需函数重载的设计逻辑,以及方法覆写机制。最后介绍dir()、type()等常用内置函数及全局变量处理,助力掌握Python编程基础。

Python函数与方法核心机制详解

本文通过具体实例深入解析Python基础中的函数与方法应用,旨在为读者提供清晰的参考与学习路径。

前言

如同其他主流编程语言,函数(或称方法)是组织良好且可重复使用的代码片段,旨在实现单一或相关联的功能目标。

Python函数具备极高的灵活性,支持在单一函数内部封装并定义其他函数,从而提升编程逻辑的模块化程度。

Python函数方法的定义规范

一、Python函数方法的定义规范

定义函数方法需遵循以下基本规则:

1. 函数代码块必须以 def 关键字起始,随后紧跟函数标识符名称及一对圆括号 ()。 2. 所有传入参数和自变量必须置于圆括号内,括号间可用于定义具体参数。 3. 函数首行语句可选地包含文档字符串,用于阐述函数说明。 4. 函数体内容以冒号起始,并需保持正确的缩进。 5. return [表达式] 用于结束函数执行,并选择性地向调用方返回值;若不带表达式的 return,则等效于返回 None。

以下是函数的基本示例:


def test_method():
  test_string = "test"
  return test_string

方法与函数的主要区别在于,方法隶属于类,能够访问调用类的属性和成员变量,并通过 self 关键字进行访问。方法的定义格式如下:


Class A:
  self.test_string = "test"
  def test_method(self):
    return self.test_string

注意:若方法未使用类成员,则无需携带 self 参数,此时方法性质与函数一致,此类情况也被称为静态方法,可通过 @staticmethod 装饰器标识。

函数与方法参数类型详解

二、函数与方法参数类型详解

1. 必备参数:必须按正确顺序传入函数,调用时的参数数量需与声明时完全一致。必备参数定义在函数定义的括号 () 内。

2. 默认参数:在调用方法或函数时,若未传入该参数,则使用预设的默认值。默认值定义在括号 () 内,且必须位于必备参数之后,例如 def test_method(str, default_str = "hello")。

3. 不定长参数:Python函数除默认参数外,还支持定义可变参数,如 *args 和 **kwargs:

(1) 函数内部可变参数名前的 * 号表示可接收0个、1个或多个参数。在函数内部,可将变量 args 视为一个元组 (tuple) 处理; (2) 双星号 (**) 用于将参数以字典形式导入,例如调用 bar(1, a=2, b=3) 时,内部 kwargs 参数即为 {'a': 2, 'b': 3}; (3) 对于函数外部带单星号 * 的情况,传入的参数若带 * 号,则在函数内部将以解压方式赋给各个参数。

4. 匿名函数:Python 使用 lambda 关键字创建匿名函数:

(1) lambda 仅是一个表达式,其函数体比 def 定义的函数更为简洁; (2) lambda 的主体是一个表达式而非代码块,仅能封装有限的逻辑; (3) lambda 函数拥有独立的命名空间,无法访问其参数列表之外或全局命名空间中的参数。

以下是 lambda 函数的示例:


sum = lambda arg1, arg2: arg1 + arg2;

调用方式如下:


sum(1,2)
# 返回3

方法的复用与继承机制

三、方法的复用与继承机制

1. 方法继承:

(1) 若一个类继承自基类,需在该类的构造函数 (__init__()) 中调用基类的初始化方法,即添加 super().__init__() 以完成基类初始化; (2) 此类可调用基类中存在而本类未重定义的方法,即子类调用父类方法,可直接通过 self 调用。

2. Python 不支持函数重载:

函数重载主要旨在解决以下两个问题:

①. 可变参数类型;

②. 可变参数个数。

此外,一个基本的设计原则是:仅当两个函数除参数类型和个数不同外,其功能完全相同时,才考虑重载。

针对情况1(功能相同但参数类型不同),Python 无需特殊处理,因为 Python 接受任何类型的参数。若功能相同,不同参数类型在 Python 中往往对应相同的代码逻辑,故无需创建两个不同函数;

针对情况2(功能相同但参数个数不同),Python 通过缺省参数解决。对于缺失的参数,设定为缺省参数即可。既然假设函数功能相同,缺失的参数终归需要被使用。鉴于情况1和情况2均有解决方案,Python 自然无需支持函数重载。

3. 方法覆写:若一个类使用 self 调用基类中存在而本类也定义的方法,则子类方法将优先被调用,从而替代父类方法。若需显式调用父类的该方法,需使用 super() 参数。

Python函数与方法的其他关键知识

四、Python函数与方法的其他关键知识

以下是 Python 常用的内置函数:

(1) dir() 函数:不带参数时,返回当前范围内的变量、方法及定义类型列表;带参数时,返回参数的属性及方法列表。若参数包含方法 __dir__(),该方法将被自动调用。

(2) type() 函数:仅带一个变量参数时,返回该变量的类型;若带三个参数,则可返回新创建的类对象(用于动态创建类对象)。


# 使用type()函数定义类
# 实例方法
def __init__(self, name):
  # 实例属性
  self.name = name
# 类方法
@classmethod
def study(cls):
  pass
# 静态方法
@staticmethod
def cal_student_num():
  pass
# 元类最大的作用不在于创建一个新的类
A = type(
  'A',
  (object,),
  {
    'role': 'student',
    '__init__': __init__,
    'study': study,
    'cal_student_num': cal_student_num
  })

(3) 在 Python 函数中,可通过声明全局变量 (global 变量名) 来调用函数外部的变量,也可通过传参形式将外部变量传入函数内使用。使用 global 方式会直接改变外部变量的值。

对 Python 相关内容感兴趣的读者,可进一步查阅本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》。

希望本文所述内容能对读者的 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 算法库。