tydocs.pages.devtydocs.pages.dev
网站首页
快速开始
关于作者
  • 在线工具大全
  • 在线ASCII码表
  • 正则表达式调试工具
  • 正则表达式可视化
  • BASE64编解码工具
  • MD5编码工具
  • AES/DES加解密
  • ASCII编解码工具
  • 在线JSON解析
  • CSS可视化工具
  • HTTP在线接口测试
  • 在线编译套装
  • 在线文本比对
  • 在线思维导图
  • 在线字数统计
  • 在线代码截图
  • 在线短链接生成
  • 在线文本替换
  • 在线文件压缩工具
  • 在线多媒体转换器
  • 在线PDF工具
  • 在线PS工具
  • logo在线制作
  • 图片智能放大工具
  • 在线抠图工具
  • ICO图标在线生成
  • 视频转GIF工具
  • DeepSeek | 深度求索
  • 通义千问 Qwen3-235B
  • 智谱清言 (chatglm.cn)
  • 豆包 - (doubao.com)
  • Kimi - (moonshot.cn)
  • 百川 - (baichuan - ai.com)
  • 通义千问 - (aliyun.com)
  • 文心一言 (baidu.com)
  • 讯飞星火 - (xfyun.cn)
  • 百度AI搜索 - deepseek
  • 天工AI - (tiangong.cn)
  • 秘塔AI搜索 (metaso.cn)
  • 微软 - copilot - 要挂梯子
网站首页
快速开始
关于作者
  • 在线工具大全
  • 在线ASCII码表
  • 正则表达式调试工具
  • 正则表达式可视化
  • BASE64编解码工具
  • MD5编码工具
  • AES/DES加解密
  • ASCII编解码工具
  • 在线JSON解析
  • CSS可视化工具
  • HTTP在线接口测试
  • 在线编译套装
  • 在线文本比对
  • 在线思维导图
  • 在线字数统计
  • 在线代码截图
  • 在线短链接生成
  • 在线文本替换
  • 在线文件压缩工具
  • 在线多媒体转换器
  • 在线PDF工具
  • 在线PS工具
  • logo在线制作
  • 图片智能放大工具
  • 在线抠图工具
  • ICO图标在线生成
  • 视频转GIF工具
  • DeepSeek | 深度求索
  • 通义千问 Qwen3-235B
  • 智谱清言 (chatglm.cn)
  • 豆包 - (doubao.com)
  • Kimi - (moonshot.cn)
  • 百川 - (baichuan - ai.com)
  • 通义千问 - (aliyun.com)
  • 文心一言 (baidu.com)
  • 讯飞星火 - (xfyun.cn)
  • 百度AI搜索 - deepseek
  • 天工AI - (tiangong.cn)
  • 秘塔AI搜索 (metaso.cn)
  • 微软 - copilot - 要挂梯子
  • Python 函数:定义、调用与参数传递

Python 函数:定义、调用与参数传递

一、函数定义

(一)基本语法

在 Python 里,函数定义的基本形式如下:

def function_name(parameters):
    """函数文档字符串"""
    # 函数体
    statement(s)
    return [expression]
  • def:这是定义函数的关键字。
  • function_name:即函数名,需遵循 Python 标识符的命名规则。
  • parameters:是函数的参数,可没有参数,也能有多个参数,参数间用逗号分隔。
  • """函数文档字符串""":这是可选的文档字符串,用于对函数功能进行描述。
  • statement(s):是函数体,包含了函数要执行的代码。
  • return:是可选的,用于从函数返回值,若省略则函数默认返回 None。

(二)示例

def greet(name):
    """该函数用于向传入的名字打招呼"""
    print(f"Hello, {name}!")
    return

二、函数调用

(一)调用方式

定义好函数后,可通过函数名加括号并传入必要参数的方式调用函数。

greet("Alice")

(二)返回值处理

若函数有返回值,可将其赋值给一个变量。

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

result = add_numbers(3, 5)
print(result)

三、参数传递

(一)位置参数

位置参数是最常见的参数类型,调用函数时,实参需按照形参的顺序依次传递。

def power(base, exponent):
    return base ** exponent

result = power(2, 3)
print(result)

(二)关键字参数

使用关键字参数调用函数时,可通过参数名指定传递的参数,这样就无需遵循参数的顺序。

result = power(exponent=3, base=2)
print(result)

(三)默认参数

在定义函数时,可为参数设定默认值,若调用函数时未提供该参数的值,则使用默认值。

def greet(name, greeting="Hello"):
    print(f"{greeting}, {name}!")

greet("Bob")
greet("Charlie", "Hi")

(四)可变参数

  1. *args*args 用于接收任意数量的位置参数,这些参数会被封装成一个元组。
def sum_numbers(*args):
    total = 0
    for num in args:
        total += num
    return total

result = sum_numbers(1, 2, 3, 4)
print(result)
  1. **kwargs**kwargs 用于接收任意数量的关键字参数,这些参数会被封装成一个字典。
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=25, city="New York")

(五)参数组合

在函数定义中,可同时使用位置参数、默认参数、*args 和 **kwargs,但它们的顺序必须是:位置参数、默认参数、*args、**kwargs。

def example_function(a, b, c=3, *args, **kwargs):
    print(f"a: {a}, b: {b}, c: {c}")
    print(f"args: {args}")
    print(f"kwargs: {kwargs}")

example_function(1, 2, 4, 5, 6, name="Bob", age=30)

四、函数文档字符串

(一)作用

函数文档字符串用于对函数的功能、参数、返回值等信息进行描述,方便其他开发者理解和使用函数。

(二)示例

def calculate_area(radius):
    """
    此函数用于计算圆的面积。

    参数:
    radius (float): 圆的半径。

    返回:
    float: 圆的面积。
    """
    import math
    return math.pi * radius ** 2

可通过 __doc__ 属性访问函数的文档字符串。

print(calculate_area.__doc__)

五、函数作用域

(一)局部变量

在函数内部定义的变量属于局部变量,其作用域仅限于函数内部。

def test_function():
    local_variable = 10
    print(local_variable)

test_function()
# 下面这行代码会报错,因为 local_variable 是局部变量
# print(local_variable)

(二)全局变量

在函数外部定义的变量属于全局变量,在函数内部可以访问全局变量,但若要在函数内部修改全局变量的值,需使用 global 关键字。

global_variable = 20

def modify_global():
    global global_variable
    global_variable = 30

print(global_variable)
modify_global()
print(global_variable)

六、匿名函数(lambda 函数)

(一)基本语法

lambda arguments: expression

lambda 函数是一种小型的、匿名的函数,可接收任意数量的参数,但只能有一个表达式。

(二)示例

add = lambda a, b: a + b
result = add(4, 6)
print(result)

lambda 函数常用于需要一个简单函数的场合,比如作为 sorted()、map()、filter() 等函数的参数。

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)