Python3函数完全指南:从基础到高级用法详解

Python3函数完全指南:从基础到高级用法详解

来源:

代码语言:txt复制'https://yuanbao.tencent.com/bot/app/share/chat/9KM7T5020LoQ','https://yuanbao.tencent.com/bot/app/share/chat/f4nEd6BtKlMJ',

'https://yuanbao.tencent.com/bot/app/share/chat/E1Qi2zeppis7','https://yuanbao.tencent.com/bot/app/share/chat/yYoNKtXKiyQ4',

'https://yuanbao.tencent.com/bot/app/share/chat/idihKsaoC1Oo','https://yuanbao.tencent.com/bot/app/share/chat/v3yQep9NZVTB',

一、函数定义与调用函数是组织好的、可重复使用的代码块,用于执行特定任务。

基本函数定义语法:代码语言:javascript复制def function_name(parameters):

"""函数文档字符串"""

# 函数体

return [expression]示例:简单函数代码语言:javascript复制# 定义函数

def greet(name):

"""返回问候语"""

return f"你好, {name}!"

# 调用函数

print(greet("张三")) # 输出: 你好, 张三!二、函数参数详解Python函数支持多种参数传递方式:

1. 位置参数最常见的参数传递方式,按顺序传递参数

代码语言:javascript复制def power(base, exponent):

return base ** exponent

print(power(2, 3)) # 82. 默认参数为参数提供默认值,调用时可省略

代码语言:javascript复制def greet(name, greeting="你好"):

return f"{greeting}, {name}!"

print(greet("李四")) # 你好, 李四!

print(greet("王五", "早上好")) # 早上好, 王五!3. 关键字参数按参数名传递值,顺序不重要

代码语言:javascript复制def person_info(name, age, city):

return f"{name}, {age}岁, 来自{city}"

print(person_info(age=25, city="北京", name="赵六"))4. 可变参数*args接收任意数量的位置参数

**kwargs接收任意数量的关键字参数

代码语言:javascript复制def sum_all(*numbers):

total = 0

for num in numbers:

total += num

return total

print(sum_all(1, 2, 3)) # 6

print(sum_all(4, 5, 6, 7)) # 22

def print_info(**info):

for key, value in info.items():

print(f"{key}: {value}")

print_info(name="张三", age=30, city="上海")三、返回值与多返回值Python函数可以返回多个值(实际上是返回元组)

代码语言:javascript复制def min_max(numbers):

return min(numbers), max(numbers)

nums = [4, 2, 9, 7, 5]

minimum, maximum = min_max(nums)

print(f"最小值: {minimum}, 最大值: {maximum}")四、变量作用域Python有四种作用域:局部(Local)、闭包(Enclosing)、全局(Global)、内置(Built-in)

作用域示例:代码语言:javascript复制global_var = "全局变量"

def outer_function():

enclosing_var = "闭包变量"

def inner_function():

local_var = "局部变量"

# 可以访问所有作用域变量

print(global_var) # 全局变量

print(enclosing_var) # 闭包变量

print(local_var) # 局部变量

inner_function()

# 尝试访问内部函数变量会出错

# print(local_var) # NameError

outer_function()五、递归函数递归函数是调用自身的函数,需要设置终止条件

经典示例:阶乘计算代码语言:javascript复制def factorial(n):

# 终止条件

if n == 0 or n == 1:

return 1

# 递归调用

return n * factorial(n-1)

print(factorial(5)) # 120斐波那契数列代码语言:javascript复制def fibonacci(n):

if n <= 0:

return []

elif n == 1:

return [0]

elif n == 2:

return [0, 1]

fib_seq = fibonacci(n-1)

fib_seq.append(fib_seq[-1] + fib_seq[-2])

return fib_seq

print(fibonacci(10)) # [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]六、Lambda表达式Lambda用于创建小型匿名函数,适合简单操作

基本语法代码语言:javascript复制lambda arguments: expression示例:

代码语言:javascript复制square = lambda x: x**2

print(square(5)) # 25与高阶函数配合在map(), filter()等函数中使用

代码语言:javascript复制# 使用map()将平方函数应用到列表

numbers = [1, 2, 3, 4]

squared = list(map(lambda x: x**2, numbers))

print(squared) # [1, 4, 9, 16]

# 使用filter()过滤偶数

even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

print(even_numbers) # [2, 4]七、函数式编程工具Python提供了一些函数式编程工具:

1. map()函数代码语言:javascript复制# 将字符串转换为大写

words = ["hello", "world", "python"]

upper_words = list(map(str.upper, words))

print(upper_words) # ['HELLO', 'WORLD', 'PYTHON']2. filter()函数代码语言:javascript复制# 过滤出长度大于5的单词

long_words = list(filter(lambda word: len(word) > 5, words))

print(long_words) # ['python']3. reduce()函数代码语言:javascript复制from functools import reduce

# 计算列表元素的乘积

numbers = [1, 2, 3, 4]

product = reduce(lambda x, y: x * y, numbers)

print(product) # 24

🔍 相关推荐