Python函数基础与参数用法实例详解

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

本文详细讲解Python函数的创建方法与参数传递机制。通过def语句定义函数,掌握位置参数、关键字参数及默认值的配置规则,深入解析不可变对象与可变列表的参数差异,并演示如何通过*args和**kwargs灵活处理任意数量的参数组合,助力开发者编写出健壮高效的业务逻辑。

Python函数的核心定义与运行机制

Python函数通过def关键字创建,该语句属于可执行语句。当解释器运行到def时,会动态创建一个函数对象并将其赋值给指定的变量名。这意味着函数在代码被实际执行前不会存在于内存中,且可以放置在任何合法的作用域内(例如嵌套在条件判断中)。


def hello(name):
    return f'Hello, {name}!'

print(hello('world'))
print(hello('Gumby'))

第1步:验证函数对象与调用方式

函数本质上是可调用对象。可使用内置的callable()函数验证变量是否具备调用资格。函数支持直接命名调用,也可赋值给其他变量别名进行间接调用。

import math
x = 1
y = math.sqrt

print(callable(x))  # False
print(callable(y))  # True

other_name = hello
print(other_name('Alice'))

参数传递机制:位置、关键字与默认值

第2步:配置默认参数与关键字传参

调用函数时,传入的参数按声明顺序匹配(位置参数)。为保障接口灵活性,可通过指定参数名进行关键字传参。结合默认值设定,能在省略部分参数时自动填充,避免类型错误。

def greet(greeting='hello', name='world'):
    print(f'{greeting},{name}!')

greet()                 # 使用全部默认值
greet('Greetings')      # 覆盖第一个位置参数
greet(name='Universe')  # 使用关键字参数覆盖name

可变对象与不可变对象的参数差异处理

Python采用“对象引用传递”模式。对于字符串、数字等不可变类型,函数内部对参数的重新赋值仅作用于局部名称,不会影响外部变量。但若传入列表等可变数据结构,函数内修改其内容会直接反映到原始对象上。

name = ['Mrs.Entity', 'Mrs.Thing']

def change_ref(n):
    n[0] = 'Mr.Gumby'

change_ref(name)
print(name)  # ['Mr.Gumby', 'Mrs.Thing']

若需隔离副作用,应传入原数据的切片副本。切片操作始终返回浅拷贝,修改副本不会波及原始数据。

names = ['Mrs.Entity', 'Mrs.Thing']
n = names[:]  # 获取副本
n[0] = 'Mr.Gumby'
print(names)  # 保持原样
change_ref(names[:])  # 安全调用

第3步:使用星号聚合任意数量参数

当预知参数数量不确定时,可使用*前缀将多余的位置参数打包为元组,使用**前缀将关键字参数打包为字典。两者常配合普通参数与默认值使用,可实现高度通用的函数接口。

def flexible_func(title, *pos_args, **key_args):
    print(title)
    print(pos_args)     # 打包为元组
    print(key_args)     # 打包为字典

flexible_func('Config:', 1, 2, 3, mode='debug', level=5)
# 输出:
# Config:
# (1, 2, 3)
# {'mode': 'debug', 'level': 5}

完整函数示例与完成判断

综合上述规则,结合斐波那契数列生成逻辑可直观检验函数能力。正确实现应具备明确的边界判断、合理的迭代范围以及准确的返回值结构。

def fibs(count):
    if count <= 0:
        return []
    result = [0, 1]
    for _ in range(count - 2):
        result.append(result[-2] + result[-1])
    return result[:count]  # 保证返回长度严格匹配请求

print(fibs(10))  # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

简要总结

掌握Python函数不仅需要熟悉def语法,更需理清参数绑定的底层逻辑。明确不可变类型与可变容器的区别,善用默认参数简化调用链,并通过*与**扩展接口兼容度,是构建模块化代码的核心要点。验证函数是否符合预期,只需在控制台输入典型用例,核对返回值结构与异常处理分支即可确认完成。

以上就是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 算法库。