欢迎光临
我们一直在努力

Python函数、模块与包

一、Python函数基础

函数是Python编程的核心,用于封装可重复使用的代码块。函数定义使用def关键字,调用时传入参数,通过return返回结果。

1. 函数的作用与定义

函数主要有两个作用:

  • 代码重用:避免重复编写相同代码

  • 模块化编程:将复杂系统分解为多个功能模块

# 函数定义与调用示例
def greet(name):
return f"{name},您好!"

print(greet("张三")) # 输出:张三,您好!

2. 函数参数进阶

Python函数支持多种参数类型:

# 位置参数
def user_info(name, age, address):
print(f"姓名:{name},年龄:{age},地址:{address}")

# 关键字参数
user_info(name="张三", age=25, address="北京")

# 默认参数
def greet(name, greeting="您好"):
return f"{name},{greeting}"

# 不定长参数
def print_scores(*args, **kwargs):
print(f"位置参数:{args}")
print(f"关键字参数:{kwargs}")

3. 变量作用域与global关键字

  • 局部变量:在函数内部定义,函数执行完毕后销毁

  • 全局变量:在函数外部定义,整个程序可访问

  • 使用global关键字在函数内部修改全局变量

count = 0 # 全局变量

def increment():
global count
count += 1
return count

二、lambda表达式

lambda表达式用于创建匿名函数,适用于简单的函数功能。

基本语法

# 普通函数
def add(x, y):
return x + y

# lambda表达式
add_lambda = lambda x, y: x + y

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

高级用法

# 带条件判断的lambda
max_num = lambda a, b: a if a > b else b

# 用于排序
students = [
{"name": "Tom", "age": 20},
{"name": "Rose", "age": 19},
{"name": "Jack", "age": 22}
]

# 按年龄排序
students.sort(key=lambda x: x['age'])

三、Python模块

模块是包含Python代码的.py文件,通过模块可以实现代码的组织和复用。

1. 内置模块使用

Python提供了丰富的内置模块:

import math
import random
import time

# 使用math模块
print(math.sqrt(25)) # 计算平方根

# 使用random模块
print(random.randint(1, 100)) # 生成随机数

# 使用time模块
start_time = time.time()
# 执行一些操作
end_time = time.time()
print(f"执行时间:{end_time – start_time}秒")

2. 模块导入方式

# 方式1:import模块名
import os
os.mkdir("test_dir")

# 方式2:import模块名 as 别名
import numpy as np

# 方式3:from模块名 import 功能
from math import sqrt, pow

# 方式4:导入所有功能(不推荐)
from math import *

四、自定义模块

创建自定义模块

创建my_module.py文件:

# my_module.py
def greet(name):
"""返回问候语"""
return f"Hello, {name}!"

def add(a, b):
"""返回两数之和"""
return a + b

# 模块测试代码
if __name__ == "__main__":
print(greet("World")) # 测试代码,仅直接运行时执行
print(add(3, 5))

使用自定义模块

# main.py
import my_module

print(my_module.greet("Alice"))
print(my_module.add(10, 20))

五、Python包

包是包含多个模块的文件夹,必须有__init__.py文件。

1. 创建包

mypackage/
__init__.py
module1.py
module2.py
subpackage/
__init__.py
module3.py

2. 包的使用

# 方式1:import包名.模块名
import mypackage.module1
mypackage.module1.say_hello()

# 方式2:from包名 import 模块
from mypackage import module1
module1.say_hello()

# 方式3:控制导入内容(在__init__.py中)
# __init__.py内容:
# __all__ = ['module1'] # 只允许导入module1

3. 包的嵌套

from mypackage.subpackage import module3
result = module3.add(3, 5)

六、重要概念总结

1. 引用与可变类型

  • 不可变类型:数值、字符串、元组(内存地址固定,值不可变)

  • 可变类型:列表、字典、集合(内存地址固定,值可变)

# 不可变类型示例
a = 10
b = a
a = 20
print(b) # 输出:10(b不受a改变影响)

# 可变类型示例
list1 = [1, 2, 3]
list2 = list1
list1.append(4)
print(list2) # 输出:[1, 2, 3, 4](list2受影响)

2. 函数中可变/不可变参数

# 不可变类型参数
def modify_number(num):
num += 10
return num

x = 5
modify_number(x)
print(x) # 输出:5(x未改变)

# 可变类型参数
def modify_list(lst):
lst.append(10)

my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # 输出:[1, 2, 3, 10](my_list被修改)

3. 拆包操作

# 元组拆包
def get_coordinates():
return 100, 200

x, y = get_coordinates() # 拆包
print(f"x={x}, y={y}")

# 字典拆包
def get_user_info():
return {"name": "张三", "age": 25}

user = get_user_info()
name, age = user["name"], user["age"] # 字典拆包
print(f"姓名:{name},年龄:{age}")

赞(0)
未经允许不得转载:171主机测评 » Python函数、模块与包
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址