Phthon
一,函数基础与分类
1.无参函数
Python的自定义无参函数并不复杂。
以关键字 def 开始,后面跟函数名,小括号,冒号,最后使用 return 退出函数。用表达式可以传递函数的返回值,如果没有返回值,则返回 Nine。
函数是以字母,数字和下划线组成的字符串,但是不能以数字开头。
定义与调用:
无需函数无需接收外部参数,直接执行固定逻辑。
def greet():
print("Hello, World!")
greet() # 输出:Hello, World!
返回值:
若未显式使用 return ,函数默认返回 None。
def add():
a, b = 10, 20
return a + b
result = add() # result = 30
- 简单逻辑:适合封装无需动态输入的代码块。
- 代码复用:避免重复代码,提高可维护性。
2.带参函数
Python带参函数的语法格式如下。
语法:
def 函数名称(形式参数列表):
代码块
return [表达式]
通过语法可以看出,带参函数与无参函数的区别是在函数名称后面的小括号中有形式参数列表,简称形参列表。
注意:形式参数列表实际上只是占位符,用于体现参数的个数,每个参数都没有提供具体的数值。 调动参数时,需要为每个参数传递对应的实际数值,又称实参列表。
定义与调用:
通过形参接收外部数据,实现形态逻辑。
def multiply(x, y):
return x * y
print(multiply(3, 4)) # 输出:12
参数类型:
- 位置参数:按顺序传递实参。
- 关键字参数:明确指定形参,顺序无关。
def power(base, exponent):
return base ** exponent
print(power(exponent=2, base=3)) # 输出:9
默认参数:形参可指定默认值,调用时可省略。
def greet(name="User"):
print(f"Hello, {name}!")
greet() # 输出:Hello, User!
注意事项:
- 默认参数后置:默认参数必须定义在非默认参数之后。
# 错误示例
def func(a=1, b): ...
# 正确示例
def func(b, a=1): ...
- 参数个数一致:参数与形参数量需匹配,否则报错。
3.参数传递方式总结
类型 | 语法 | 特点 |
位置参数 | func(3,4) | 按顺序传递,不可省略 |
关键字参数 | func(x=3,y=4) | 明确参数名,顺序灵活 |
默认参数 | def func(x=0):... | 调用时可省略,简化代码 |
二,变量作用域与全局变量
1.局部变量与全局变量
- 局部变量:定义在函数内部,仅在函数内有效。
- 全局变量:定义在模块顶层,所有函数可访问。
示例:
global_var = "Global"
def func():
local_var = "Local"
print(global_var) # 输出:Global
print(local_var) # 输出:Localfunc()
print(global_var) # 输出:Global
print(local_var) # 报错:未定义
2.global关键字
用于在函数内部修改全局变量。
count = 0
def increment():
global count
count += 1increment()
print(count) # 输出:1
总结:
- 避免滥用全局变量:易引发数据冲突,推荐通过参数传递数据。
- 作用域优先级:局部变量优先于同名全局变量。
三,lambda函数于匿名操作
1.lambda语法
lambda函数用于快速定义单行匿名函数,语法为:
lambda 参数列表: 表达式
示例:
square = lambda x: x ** 2
print(square(5)) # 输出:25
2.适用场景
- 简单操作:如数据转换,过滤。
- 高阶函数参数:配合 map filter 使用
numbers = [1, 2, 3]
squared = list(map(lambda x: x ** 2, numbers)) # [1, 4, 9]
限制:
仅支持单行表达式,不能包含复杂逻辑(如循环,条件分支)。
四,常用内置函数详解
1.数值处理函数
函数 | 功能 | 示例 |
abs() | 返回绝对值 | abs(-10) - 10 |
sum() | 求和 | sum([1,2,3]) -6 |
max() | 返回最大值 | max([5,2,8]) - 8 |
min() | 返回最小值 | min([5,2,8]) - 2 |
2.类型转换函数
函数 | 功能 | 示例 |
int() | 转换为整数 | int("100") - 100 |
float() | 转换为浮点数 | float("3.14") - 3.14 |
bool() | 转换为布尔值 | bool(0) - False |
3.序列生成函数
range()生成整数序列,常用于循环:
for i in range(0, 10, 2):
print(i) # 输出:0, 2, 4, 6, 8
五,模块与包的组织
1.模块的定义与导入
模块:一个 .py 文件,包含函数,类或变量。
示例:
# mymodule.py
def add(a, b):
return a + b
导入方式:
导入整个模块:
import mymodule
mymodule.add(2, 3) # 输出:5
导入特定函数:
from mymodule import add
add(2, 3) # 输出:5
别名导入
import mymodule as mm
mm.add(2, 3)
2.包的结构与使用
包:包含多个模块的目录,需包含 __init__.py
目录结构:
project/
├── main.py
└── utils/
├── __init__.py
└── math_tools.py
导入包内模块:
from utils import math_tools
math_tools.multiply(3, 4) # 假设 math_tools 中定义 multiply 函数
六,常用模块示例解析
1.random模块
用于生成随机数或随即操作:
import random
print(random.randint(1, 100)) # 生成 1-100 的随机整数
print(random.choice(["a", "b", "c"])) # 随机选取元素
random.shuffle([1, 2, 3]) # 打乱列表顺序
2.sys模块
获取系统信息与控制程序行为:
import sys
print(sys.version) # Python 版本
print(sys.path) # 模块搜索路径
sys.exit() # 强制退出程序
2.time模块
处理时间相关操作:
import time
print(time.time()) # 当前时间戳(秒)
print(time.ctime()) # 可读时间字符串
time.sleep(2) # 暂停 2 秒
七,总结与最佳实践
1.核心要点回顾
- 函数设计:合理使用参数与返回值,避免全局变量。
- 模块化开发:通过模块和包组织代码,提升复用性。
- 内置工具:熟练使用 random , sys,time等模块简化开发。
2.最佳实践建议
- 代码分层:将功能拆分为独立模块,降低耦合度。
- 异常处理:在关键操作中添加 try-except 块增强健壮性。
- 文档注释:为函数和模块添加文档字符串("""注释"""),提高可读性。