python的函数介绍

一.定义和调用函数

1.定义函数

在 Python 中,使用 def 关键字来定义一个函数。函数可以包含参数,也可以包含返回值

基本语法

def function_name(parameters):
    """docstring"""
    # Function body
    return result
def greet(name):  
    """This function greets the person passed as the parameter."""
    return f"Hello, {name}!"

# 现在可以调用此函数
message = greet("Alice")
print(message)  # 输出: Hello, Alice!

2.调用函数

定义函数后,可以通过函数名加括号的方式来调用函数。如果有参数,则在括号内传递参数

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

result = add(3, 4)
print(result)  # 输出: 7

二.局部和全局变量

1.局部变量

局部变量是在函数内部定义的变量,其作用域仅限于函数内部。调用函数时创建,函数执行完毕后销毁

def my_function():
    x = 10  # 局部变量
    print(x)

my_function()  # 输出: 10
# print(x)  # 此行将报错,因为 x 是局部变量,函数外不可见

2.全局变量

全局变量是在函数外部定义的变量,作用域是整个脚本。可以在函数内部访问全局变量,但如果要修改它,必须使用 global 关键字

y = 20  # 全局变量

def another_function():
    global y
    y = 30
    print(y)

print(y)  # 输出: 20
another_function()  # 调用函数
print(y)  # 输出: 30

三.lambda 函数

lambda 函数是一种匿名函数,使用 lambda 关键字定义。它的语法比较简洁,适合定义简单的一行函数

基本语法

lambda arguments: expression

示例

# lambda 函数的定义
add = lambda a, b: a + b

# 调用 lambda 函数
print(add(3, 5))  # 输出: 8

1.lambda 函数与高阶函数

lambda 函数经常与内置的高阶函数如 mapfilter 和 sorted 结合使用

(1).map函数用法

map 函数用于将一个函数应用到一个可迭代对象的每个元素上,并返回一个迭代器

# 将一个列表中的每个元素乘以2
numbers = [1, 2, 3, 4, 5]
def multiply_by_two(x):
    return x * 2

result = map(multiply_by_two, numbers)
print(list(result))  # 输出: [2, 4, 6, 8, 10]

还可以使用 lambda 函数简化:

result = map(lambda x: x * 2, numbers)
print(list(result))  # 输出: [2, 4, 6, 8, 10]

(2).使用 filter 函数

filter 函数用于过滤一个可迭代对象的元素,并返回一个迭代器。只有函数返回 True 的元素才会被包含在最终的结果中

# 过滤出列表中所有的偶数
numbers = [1, 2, 3, 4, 5, 6]
def is_even(x):
    return x % 2 == 0

result = filter(is_even, numbers)
print(list(result))  # 输出: [2, 4, 6]

同样可以使用 lambda 函数简化:

​​​​​​

result = filter(lambda x: x % 2 == 0, numbers)
print(list(result))  # 输出: [2, 4, 6]

(3)使用sorted函数

sorted 函数用于对一个可迭代对象进行排序,并返回一个新的列表

sorted(iterable, key=None, reverse=False)

​​​​​​​

# 对一个列表进行排序
numbers = [5, 2, 9, 1, 5, 6]
result = sorted(numbers)
print(result)  # 输出: [1, 2, 5, 5, 6, 9]

# 倒序排序
result = sorted(numbers, reverse=True)
print(result)  # 输出: [9, 6, 5, 5, 2, 1]

# 对一个包含字典的列表按特定的键排序
students = [{'name': 'Alice', 'age': 25},
            {'name': 'Bob', 'age': 20},
            {'name': 'Charlie', 'age': 23}]

result = sorted(students, key=lambda x: x['age'])
print(result)  # 输出: [{'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 23}, {'name': 'Alice', 'age': 25}]

综合示例

# 全局变量
message = "Global Message"

def show_message():
    # 局部变量
    message = "Local Message"
    print("Inside function:", message)

show_message()
print("Outside function:", message)

# lambda 函数示例
multiply = lambda x, y: x * y
print(multiply(4, 5))  # 输出: 20

# 使用 lambda 与 sorted
students = [
    ("Alice", 91),
    ("Bob", 85),
    ("Charlie", 78)
]

sorted_students = sorted(students, key=lambda student: student[1])
print(sorted_students)  # 按分数排序的学生列表

输出

Inside function: Local Message
Outside function: Global Message
20
[('Charlie', 78), ('Bob', 85), ('Alice', 91)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值