Python函数详解:定义、调用、参数与return

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Python函数入门

函数是结构化与模块化编程的基石。它们能将代码拆分为逻辑块,实现代码复用,让程序更易读、更易扩展。

Python提供了强大且灵活的函数机制。本文将深入讲解Python函数的核心知识:定义、调用、参数、返回值以及最佳编程实践。

什么是Python函数

函数是一个命名的代码块,可被多次调用来执行特定任务。Python函数能接收参数并返回值,是实现模块化编程、避免代码重复的关键元素。

使用函数的主要优势:

  • 代码复用
  • 更好的程序组织
  • 简化测试与调试
  • 降低程序复杂度

函数定义:def关键字

Python使用def关键字定义函数。函数定义语法包含几个必要元素。

def greet():
    print("你好,世界!")

函数定义结构

  • def — 定义函数的关键字
  • greet — 函数名(需遵循变量命名规则)
  • () — 参数括号(可为空)
  • : — 冒号,表示函数体开始
  • 缩进 — 函数体必须缩进(通常为4个空格)

函数命名规则

命名函数时应遵循以下规则:

  • 只能使用字母、数字和下划线
  • 以字母或下划线开头
  • 多词名称使用蛇形命名法(snake_case)
  • 选择描述性名称

Python函数调用

调用Python函数时,只需使用函数名加圆括号。函数调用会在程序中执行该函数定义的代码。

greet()  # 输出:你好,世界!

函数调用要点

如何正确调用Python函数:

  • 使用准确的函数名
  • 函数名后加圆括号
  • 在括号内传入所需参数
  • 确保函数在调用前已定义

函数参数与实参

Python函数可接收参数来处理不同数据,使函数更灵活通用。

def greet(name):
    print(f"你好,{name}!")

greet("小明")  # 你好,小明!

位置参数与关键字参数

Python支持多种参数传递方式:

def user_info(name, age):
    print(f"{name} — {age}岁")

# 位置参数
user_info("张三", 30)

# 关键字参数
user_info(age=25, name="李四")

位置参数按参数定义的顺序传递。关键字参数通过参数名指定值,顺序可任意。

默认参数

默认参数允许在调用函数时不传递所有参数:

def greet(name="访客"):
    print(f"您好,{name}!")

greet()          # 您好,访客!
greet("小红")    # 您好,小红!

可变数量参数

使用*args

*args参数允许函数接收任意数量的位置参数:

def sum_all(*args):
    return sum(args)

print(sum_all(1, 2, 3))  # 输出:6
print(sum_all(10, 20))   # 输出:30

使用**kwargs

**kwargs参数允许函数接收任意数量的关键字参数:

def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="小明", age=20, city="北京")

return返回值

函数使用return语句将结果返回给调用者。如果没有return,函数默认返回None。

def add(a, b):
    return a + b

result = add(5, 3)
print(result)  # 输出:8

返回多个值

Python函数可以返回多个值(实际上返回一个元组):

def min_max(numbers):
    return min(numbers), max(numbers)

low, high = min_max([1, 5, 3, 9, 2])
print(f"最小值:{low}, 最大值:{high}")

函数进阶技巧

嵌套函数

函数内部可以定义另一个函数:

def outer(text):
    def inner():
        print(f"内部函数:{text}")
    inner()

outer("Python")  # 输出:内部函数:Python

递归函数

函数可以调用自身,实现递归:

def factorial(n):
    if n == 1:
        return 1
    return n * factorial(n - 1)

print(factorial(5))  # 输出:120

类型注解

Python支持为参数和返回值添加类型注解,提高代码可读性:

def greet(name: str) -> str:
    return f"你好,{name}!"

print(greet("Python"))  # 输出:你好,Python!

最佳实践

  • 函数名应清晰描述其功能
  • 每个函数只做一件事
  • 合理使用默认参数和类型注解
  • 编写文档字符串(docstring)说明函数用途
  • 避免过长的函数体

掌握Python函数是成为高效Python开发者的关键一步。通过本文的学习,你已经了解了函数定义、调用、参数传递、返回值等核心概念。继续练习,将这些知识应用到实际项目中吧!

博客

书籍推荐