鱼C论坛

 找回密码
 立即注册
查看: 434|回复: 2

[技术交流] Python内置函数详解

[复制链接]
发表于 2025-2-27 15:28:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 jinchanchan 于 2025-2-27 15:33 编辑

什么是Python内置函数?
Python内置函数是Python解释器中预定义的函数,无需导入任何模块即可直接使用。这些函数提供了Python编程中最基础和常用的功能,是Python语言的核心组成部分。

内置函数分类详解
1. 数学运算类
abs(x)
○ 功能:返回数字的绝对值
○ 参数:数字(整数/浮点数/复数)
○ 示例:
  1. print(abs(-5))  # 输出:5
  2. print(abs(3.14))  # 输出:3.14
复制代码


divmod(a, b)
○ 功能:返回两个数的商和余数
○ 参数:两个数字
○ 示例:
  1. print(divmod(7, 2))  # 输出:(3, 1)
复制代码


pow(x, y[, z])
○ 功能:返回x的y次方(如果提供z,则返回x的y次方对z取余)
○ 示例:
  1. print(pow(2, 3))  # 输出:8
  2. print(pow(2, 3, 5))  # 输出:3
复制代码


round(number[, ndigits])
○ 功能:四舍五入到指定小数位
○ 示例:
  1. print(round(3.1415, 2))  # 输出:3.14
复制代码


2. 类型转换类
int(x[, base])
○ 功能:将对象转换为整数
○ 示例:
  1. print(int('123'))  # 输出:123
  2. print(int('1010', 2))  # 输出:10(二进制转十进制)
复制代码


float(x)
○ 功能:将对象转换为浮点数
○ 示例:
  1. print(float('3.14'))  # 输出:3.14
复制代码


str(object)
○ 功能:将对象转换为字符串
○ 示例:
  1. print(str(123))  # 输出:'123'
复制代码


bool(x)
○ 功能:将对象转换为布尔值
○ 示例:
  1. print(bool(1))  # 输出:True
  2. print(bool(''))  # 输出:False
复制代码


3. 序列操作类
len(s)
○ 功能:返回对象的长度
○ 示例:
  1. print(len([1, 2, 3]))  # 输出:3
  2. print(len('Python'))  # 输出:6
复制代码


range(start, stop[, step])
○ 功能:生成数字序列
○ 示例:
  1. for i in range(0, 5, 2):
  2.     print(i)  # 输出:0, 2, 4
复制代码


sorted(iterable[, key][, reverse])
○ 功能:返回排序后的新列表
○ 示例:
  1. print(sorted([3, 1, 4, 1, 5]))  # 输出:[1, 1, 3, 4, 5]
复制代码


reversed(seq)
○ 功能:返回反转的迭代器
○ 示例:
  1. print(list(reversed([1, 2, 3])))  # 输出:[3, 2, 1]
复制代码


4. 迭代器和生成器类
iter(object[, sentinel])
○ 功能:返回迭代器对象
○ 示例:
  1. it = iter([1, 2, 3])
  2. print(next(it))  # 输出:1
复制代码


next(iterator[, default])
○ 功能:返回迭代器的下一个项目
○ 示例:
  1. it = iter([1, 2])
  2. print(next(it))  # 输出:1
  3. print(next(it))  # 输出:2
  4. print(next(it, 'end'))  # 输出:'end'
复制代码


5. 对象操作类
type(object)
○ 功能:返回对象的类型
○ 示例:
  1. print(type(123)) &#160;# 输出:<class 'int'>
复制代码


isinstance(object, classinfo)
○ 功能:判断对象是否是指定类型
○ 示例:
  1. print(isinstance(123, int)) &#160;# 输出:True
复制代码


id(object)
○ 功能:返回对象的唯一标识符
○ 示例:
  1. x = [1,&#160;2,&#160;3]
  2. print(id(x)) &#160;# 输出:对象的内存地址
复制代码


6. 输入输出类
print(*objects, sep=' ', end='\n')
○ 功能:打印输出
○ 示例:
  1. print('Hello',&#160;'World', sep=', ') &#160;# 输出:Hello, World
复制代码


input([prompt])
○ 功能:接收用户输入
○ 示例:
  1. name = input('请输入你的名字:')
  2. print(f'你好,{name}')
复制代码


7. 其他重要内置函数
zip(*iterables)
○ 功能:将多个可迭代对象打包成元组的迭代器
○ 示例:
  1. list(zip([1,&#160;2], ['a',&#160;'b'])) &#160;# 输出:[(1, 'a'), (2, 'b')]
复制代码


map(function, iterable, ...)
○ 功能:对可迭代对象的每个元素应用函数
○ 示例:
  1. list(map(str, [1,&#160;2,&#160;3])) &#160;# 输出:['1', '2', '3']
复制代码


filter(function, iterable)
○ 功能:过滤可迭代对象中的元素
○ 示例:
  1. list(filter(lambda&#160;x: x >&#160;0, [-1,&#160;0,&#160;1,&#160;2])) &#160;# 输出:[1, 2]
复制代码


8. 高级内置函数
property(fget=None, fset=None, fdel=None, doc=None)
○ 功能:将方法转换为属性
○ 应用场景:实现属性的getter和setter,提供更优雅的属性访问方式
○ 示例:
  1. class&#160;Circle:
  2. &#160; &#160;&#160;def&#160;__init__(self, radius):
  3. &#160; &#160; &#160; &#160; self._radius = radius
  4. &#160; &#160; &#160; &#160;&#160;
  5. &#160; &#160; @property
  6. &#160; &#160;&#160;def&#160;radius(self):
  7. &#160; &#160; &#160; &#160;&#160;return&#160;self._radius
  8. &#160; &#160; &#160; &#160;&#160;
  9. &#160; &#160; @radius.setter
  10. &#160; &#160;&#160;def&#160;radius(self, value):
  11. &#160; &#160; &#160; &#160;&#160;if&#160;value <&#160;0:
  12. &#160; &#160; &#160; &#160; &#160; &#160;&#160;raise&#160;ValueError("半径不能为负数")
  13. &#160; &#160; &#160; &#160; self._radius = value
复制代码


staticmethod(function)
○ 功能:将方法转换为静态方法
○ 应用场景:定义不需要访问类或实例属性的方法
○ 示例:
  1. class&#160;MathUtils:
  2. &#160; &#160; @staticmethod
  3. &#160; &#160;&#160;def&#160;is_prime(n):
  4. &#160; &#160; &#160; &#160;&#160;if&#160;n <&#160;2:
  5. &#160; &#160; &#160; &#160; &#160; &#160;&#160;return&#160;False
  6. &#160; &#160; &#160; &#160;&#160;for&#160;i&#160;in&#160;range(2, int(n **&#160;0.5) +&#160;1):
  7. &#160; &#160; &#160; &#160; &#160; &#160;&#160;if&#160;n % i ==&#160;0:
  8. &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;return&#160;False
  9. &#160; &#160; &#160; &#160;&#160;return&#160;True
复制代码


classmethod(function)
○ 功能:将方法转换为类方法
○ 应用场景:实现替代构造函数,处理类级别的操作
○ 示例:
  1. class&#160;Date:
  2. &#160; &#160;&#160;def&#160;__init__(self, year, month, day):
  3. &#160; &#160; &#160; &#160; self.year = year
  4. &#160; &#160; &#160; &#160; self.month = month
  5. &#160; &#160; &#160; &#160; self.day = day
  6. &#160; &#160;&#160;
  7. &#160; &#160; @classmethod
  8. &#160; &#160;&#160;def&#160;from_string(cls, date_string):
  9. &#160; &#160; &#160; &#160; year, month, day = map(int, date_string.split('-'))
  10. &#160; &#160; &#160; &#160;&#160;return&#160;cls(year, month, day)
复制代码


9. 上下文管理器函数
contextlib.contextmanager
○ 功能:创建上下文管理器
○ 应用场景:资源管理、临时状态修改
○ 示例:
  1. from&#160;contextlib&#160;import&#160;contextmanager

  2. @contextmanager
  3. def&#160;timer():
  4. &#160; &#160;&#160;import&#160;time
  5. &#160; &#160; start = time.time()
  6. &#160; &#160;&#160;yield
  7. &#160; &#160; end = time.time()
  8. &#160; &#160; print(f"执行时间:{end - start}秒")

  9. with&#160;timer():
  10. &#160; &#160;&#160;# 执行某些操作
  11. &#160; &#160;&#160;pass
复制代码


性能优化建议
1. 使用内置函数替代自定义实现
    ○ 内置函数是用C语言实现的,性能通常优于Python实现
    ○ 例如:使用 sum()&#160;替代手动循环求和
○ 合理使用生成器函数
    ○ 对于大数据集,使用生成器可以减少内存使用
    ○ 例如:使用 range()&#160;替代&#160;list(range())
○ 选择合适的数据结构
    ○ 使用 set()&#160;进行成员检测比&#160;list&#160;更快
    ○ 使用 dict.get()&#160;替代&#160;try-except&#160;进行键值获取

实际开发中的注意事项
1. 异常处理
    ○ 使用 try-except&#160;处理可能的类型转换错误
    ○ 对输入参数进行有效性验证
○ 性能考虑
    ○ 避免在循环中重复调用内置函数
    ○ 使用性能分析工具评估性能瓶颈
○ 代码可维护性
    ○ 合理使用函数注释和类型提示
    ○ 遵循Python的编码规范
○ 安全性考虑
    ○ 避免使用 eval()&#160;处理不信任的输入
    ○ 注意数据类型转换时的边界情况
调试技巧
1. 使用内置函数进行调试
    ○ dir():查看对象的属性和方法
    ○ vars():获取对象的__dict__属性
    ○ locals():查看当前作用域的局部变量
○ 使用断言进行测试
    ○ assert语句配合内置函数验证假设
    ○ 使用__debug__变量控制断言

最佳实践示例
1. 数据处理优化
  1. # 低效的实现
  2. data = [1,&#160;2,&#160;3,&#160;4,&#160;5]
  3. result =&#160;0
  4. for&#160;num&#160;in&#160;data:
  5. &#160; &#160; result += num

  6. # 优化后的实现
  7. result = sum(data)
复制代码


2. 文件操作最佳实践
  1. # 推荐使用上下文管理器
  2. with&#160;open('file.txt',&#160;'r')&#160;as&#160;f:
  3. &#160; &#160; content = f.read()

  4. # 而不是
  5. f = open('file.txt',&#160;'r')
  6. try:
  7. &#160; &#160; content = f.read()
  8. finally:
  9. &#160; &#160; f.close()
复制代码


3. 异常处理最佳实践
  1. # 推荐的方式
  2. def&#160;safe_convert_to_int(value):
  3. &#160; &#160;&#160;try:
  4. &#160; &#160; &#160; &#160;&#160;return&#160;int(value)
  5. &#160; &#160;&#160;except&#160;(ValueError, TypeError):
  6. &#160; &#160; &#160; &#160;&#160;return&#160;None

  7. # 而不是
  8. def&#160;unsafe_convert_to_int(value):
  9. &#160; &#160;&#160;return&#160;int(value) &#160;# 可能引发异常
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-2-27 15:30:44 | 显示全部楼层
什么是Python内置函数?

Python内置函数是Python解释器中预定义的函数,无需导入任何模块即可直接使用。这些函数提供了Python编程中最基础和常用的功能,是Python语言的核心组成部分。

内置函数分类详解

  • 数学运算类


    1. [b]abs(x)[/b]
    2. 功能:返回数字的绝对值
    3. 参数:数字(整数/浮点数/复数)
    4. 示例:
    5. print(abs(-5))  # 输出:5
    6. print(abs(3.14))  # 输出:3.14

    7. [b]divmod(a, b)[/b]
    8. 功能:返回两个数的商和余数
    9. 参数:两个数字
    10. 示例:
    11. print(divmod(7, 2))  # 输出:(3, 1)

    12. [b]pow(x, y)[/b]
    13. 功能:返回x的y次方(如果提供z,则返回x的y次方对z取余)
    14. 示例:
    15. print(pow(2, 3))  # 输出:8
    16. print(pow(2, 3, 5))  # 输出:3

    17. [b]round(number)[/b]
    18. 功能:四舍五入到指定小数位
    19. 示例:
    20. print(round(3.1415, 2))  # 输出:3.14
    复制代码

  • 类型转换类


    1. [b]int(x)[/b]
    2. 功能:将对象转换为整数
    3. 示例:
    4. print(int('123'))  # 输出:123
    5. print(int('1010', 2))  # 输出:10(二进制转十进制)

    6. [b]float(x)[/b]
    7. 功能:将对象转换为浮点数
    8. 示例:
    9. print(float('3.14'))  # 输出:3.14

    10. [b]str(object)[/b]
    11. 功能:将对象转换为字符串
    12. 示例:
    13. print(str(123))  # 输出:'123'

    14. [b]bool(x)[/b]
    15. 功能:将对象转换为布尔值
    16. 示例:
    17. print(bool(1))  # 输出:True
    18. print(bool(''))  # 输出:False
    复制代码

  • 序列操作类


    1. [b]len(s)[/b]
    2. 功能:返回对象的长度
    3. 示例:
    4. print(len([1, 2, 3]))  # 输出:3
    5. print(len('Python'))  # 输出:6

    6. [b]range(start, stop)[/b]
    7. 功能:生成数字序列
    8. 示例:
    9. for i in range(0, 5, 2):
    10.     print(i)  # 输出:0, 2, 4

    11. [b]sorted(iterable)[/b]
    12. 功能:返回排序后的新列表
    13. 示例:
    14. print(sorted([3, 1, 2]))  # 输出:[1, 2, 3]

    15. [b]reversed(seq)[/b]
    16. 功能:返回反转的迭代器
    17. 示例:
    18. print(list(reversed([1, 2, 3])))  # 输出:[3, 2, 1]
    复制代码

  • 迭代器和生成器类


    1. [b]iter(object)[/b]
    2. 功能:返回迭代器对象
    3. 示例:
    4. it = iter([1, 2, 3])
    5. print(next(it))  # 输出:1

    6. [b]next(iterator)[/b]
    7. 功能:返回迭代器的下一个项目
    8. 示例:
    9. it = iter([1, 2, 3])
    10. print(next(it))  # 输出:1
    11. print(next(it))  # 输出:2
    12. print(next(it, 'end'))  # 输出:'end'
    复制代码

  • 对象操作类


    1. [b]type(object)[/b]
    2. 功能:返回对象的类型
    3. 示例:
    4. print(type(123))  # 输出:<class 'int'>

    5. [b]isinstance(object, classinfo)[/b]
    6. 功能:判断对象是否是指定类型
    7. 示例:
    8. print(isinstance(123, int))  # 输出:True

    9. [b]id(object)[/b]
    10. 功能:返回对象的唯一标识符
    11. 示例:
    12. x = [1, 2, 3]
    13. print(id(x))  # 输出:对象的内存地址
    复制代码

  • 输入输出类


    1. [b]print(*objects, sep=' ', end='\n')[/b]
    2. 功能:打印输出
    3. 示例:
    4. print('Hello', 'World', sep=', ')  # 输出:Hello, World

    5. [b]input()[/b]
    6. 功能:接收用户输入
    7. 示例:
    8. name = input('请输入你的名字:')
    9. print(f'你好,{name}')
    复制代码

  • 其他重要内置函数


    1. [b]zip(*iterables)[/b]
    2. 功能:将多个可迭代对象打包成元组的迭代器
    3. 示例:
    4. print(list(zip([1, 2], ['a', 'b'])))  # 输出:[(1, 'a'), (2, 'b')]

    5. [b]map(function, iterable, ...)[/b]
    6. 功能:对可迭代对象的每个元素应用函数
    7. 示例:
    8. print(list(map(str, [1, 2, 3])))  # 输出:['1', '2', '3']

    9. [b]filter(function, iterable)[/b]
    10. 功能:过滤可迭代对象中的元素
    11. 示例:
    12. print(list(filter(lambda x: x > 0, [-1, 0, 1, 2])))  # 输出:[1, 2]
    复制代码

  • 高级内置函数


    1. [b]property(fget=None, fset=None, fdel=None, doc=None)[/b]
    2. 功能:将方法转换为属性
    3. 应用场景:实现属性的getter和setter,提供更优雅的属性访问方式
    4. 示例:
    5. class Circle:
    6.     def __init__(self, radius):
    7.         self._radius = radius
    8.    
    9.     @property
    10.     def radius(self):
    11.         return self._radius
    12.    
    13.     @radius.setter
    14.     def radius(self, value):
    15.         if value < 0:
    16.             raise ValueError("Radius cannot be negative")
    17.         self._radius = value

    18. c = Circle(5)
    19. print(c.radius)  # 输出:5
    20. c.radius = 10
    21. print(c.radius)  # 输出:10
    复制代码



以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-2-28 09:11:56 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-5 23:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表