Skip to content

Python 函数

函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。函数能提高应用的模块性和代码的重复利用率。你已经使用过许多内置函数,如 print()len(),现在你将学习如何创建自己的函数。

定义函数

  • 函数代码块以 def 关键字开头,后接函数名和圆括号 ()
  • 任何传入的参数和自变量都必须放在圆括号中间。
  • 函数的第一行语句可以选择性地使用文档字符串(docstring)来为函数添加说明。
  • 函数内容以冒号 : 起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的 return 语句相当于返回 None

基本语法:

python
def function_name(parameters):
    """函数的文档字符串"""
    # 函数体
    statement(s)
    return [expression]

调用函数

定义一个函数只是给了函数一个名称,指定了函数里包含的参数,和代码块结构。这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。

python
# 定义一个简单的函数
def greet():
    """打印一句问候语。"""
    print("Hello, Python!")

# 调用函数
greet() # 输出: Hello, Python!

参数

函数可以接收参数,这些参数是传递给函数的值,供函数内部使用。

位置参数

调用函数时,传递的值会按照顺序依次赋给参数。

python
def greet_user(name):
    """向指定的用户打印问候语。"""
    print(f"Hello, {name}!")

greet_user("Alice") # 输出: Hello, Alice!

关键字参数

你也可以使用 key=value 的形式来传递参数,这样可以忽略参数的顺序。

python
def describe_pet(animal_type, pet_name):
    print(f"I have a {animal_type} named {pet_name}.")

describe_pet(animal_type="hamster", pet_name="Harry")
describe_pet(pet_name="Harry", animal_type="hamster") # 顺序不重要

默认参数

在定义函数时,你可以为参数指定一个默认值。如果在调用函数时没有提供该参数的值,则会使用默认值。

python
def describe_pet(pet_name, animal_type="dog"):
    print(f"I have a {animal_type} named {pet_name}.")

describe_pet("Willie") # 使用默认值 'dog'
# 输出: I have a dog named Willie.

describe_pet("Mitty", "cat") # 提供新值 'cat'
# 输出: I have a cat named Mitty.

返回值

函数可以使用 return 语句向调用者返回一个值。函数可以返回任何类型的值,包括列表、字典等复杂结构。

python
def add(a, b):
    """返回两个数的和。"""
    return a + b

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

一个函数可以没有 return 语句,或者 return 后面不跟任何值。在这种情况下,函数会自动返回 None

返回多个值

函数可以一次返回多个值,这些值会被打包成一个元组。

python
def get_name_and_age():
    name = "John"
    age = 30
    return name, age

# 接收返回值
info = get_name_and_age()
print(info) # 输出: ('John', 30)

# 使用元组解包接收
name, age = get_name_and_age()
print(f"Name: {name}, Age: {age}") # 输出: Name: John, Age: 30

变量作用域

  • 局部变量 (Local Variables): 在函数内部定义的变量,只能在函数内部访问。
  • 全局变量 (Global Variables): 在函数外部定义的变量,可以在程序的任何地方访问(包括函数内部)。
python
global_var = "I am global"

def my_function():
    local_var = "I am local"
    print(global_var) # 可以访问全局变量
    print(local_var)

my_function()
# print(local_var) # 这会引发 NameError,因为无法在函数外访问局部变量

本站内容仅供学习和研究使用。