牢记python语言基础知识

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 【6月更文挑战第20天】 `input` & `print`- `print()`支持任意数量的位置参数,默认用空格分隔,可通过`sep`和`end`定制输出。- 可重定向`print`到文件,如`print("hello!", file=f)`。- `flush=True`确保立即输出,避免大字符串滞后。## 2. 基本数据类型- `str`, `bytes`, `int`, `bool`, `float`, `complex`。- `bytes`是底层I/O的基础,`sys.stdout.buffer`处理字节输出。

简介

本文介绍python语言基本知识,Python提供了灵活的输入输出、数据类型、继承机制以及对象属性管理,通过__special__方法和__slots__等特性优化性能和内存使用。

具体包括元类, boolint子类,用于兼容性。 MRO(方法解析顺序),对象与属性,__getattr__, __setattr__, __delattr__管理对象属性,哈希与ID,dir & vars__slots__, 控制实例变量存储,节省内存,防止动态属性添加。

本文的关键点,包括inputprint的用法、基本数据类型、MRO、对象属性、哈希和内存标识以及__slots__的作用。

Toroid托瑞德符号.png

1 input 和 print

完整的print

print(*values, sep=' ', end='\n',file=sys.stdout, flush=False)

简单的value表示可用提供任意数量的位置参数给 print,它将正确打印。 默认使用空格分隔

使用print将输出打印到文件

    with open('test.txt', 'w') as f:
        print("hello!", file=f)

有些语言有特殊对象,可用让你调用print方法,通过使用熟悉的print接口写入文件。

在python,您可更进一步,临时配置print函数默认写入文件

    sys.stdout = open('mytext.txt', 'w')

flush是print函数的布尔标志。它所做的只是告诉print将文本立即写入控制台/文件,而不是将其放入缓冲区中。

这通常没有太大的区别,但是如果您将一个非常大的字符串打印到控制台,您可能希望将其设置True 为避免向用户显示输出时出现滞后

2 五个基本数据类型关键字 str, bytes, int, bool, float, complex

基于文本的数据类型

  • 字符串类型 str
  • 字节码 bytes

    实际上是计算中所有I/O的基础,如果您了解计算机,所有数据其实

          都以位和字节存储和处理,这是终端的真正工作方式
    

    sys模块的I/O缓冲区

          sys.stdout.buffer
          sys.stdin.buffer
    

    缓冲区对象接收butes,将它们直接写入输出缓冲区,并返回字节数

      >>> char_count = sys.stdout.buffer.write("hello!\n".encode())
      hello!
      >>> char_count
      7
    

    为了证明都是字节,另一个字节打印表情符号的示例

              b'\xf0\x9f\x90\x8d'   # 🐍的utf-8编码 encoded string of the snake emoji
    
      _ = sys.stdout.buffer.write(b'\xf0\x9f\x90\x8d')
          🐍
    

    int是另一种广泛使用的基本原始数据类型。

    它也是 2 种其他数据类型的最小公分母:float和complex. complex是 的超类型float,而后者又是 的超类型int。

3 mro对这些类的属性来自行检查

mro 代表 方法解析顺序,它定义了查找类调用方法的顺序。

本质上,方法调用首先在类本身调用如果它不存在,则在父类搜索,然后在其父类的父类搜索一直到顶部。

object.python的所有内容都继承自object,是的,python的几乎所有东西都是对象

>>> int.mro()
[<class 'int'>, <class 'object'>]
>>> float.mro()
[<class 'float'>, <class 'object'>]
>>> complex.mro()
[<class 'complex'>, <class 'object'>]
>>> str.mro()
[<class 'str'>, <class 'object'>]
>>> bool.mro()
[<class 'bool'>, <class 'int'>, <class 'object'>]

您可从它们 “根”类型 看出,所有其他数据类型都不是任何东西的 子类 除了 object 它将永远存在,除了bool 它继承自int。

现在 您可能希望知道 为什么要bool subclass int,这主要是因为兼容性原因。
所以您都可用在预期bool 的任何地方传递 一个 int。

4 对象 object

obj.x通过调用getattr的方法访问属性。

类似地 setattr 设置一个新属性和 delattr删除一个属性分别调用和。

对象的哈希是通过预定义的hash方法生成的,对象的字符串表示来自repr

而python的所有对象都是object.

5 小结

创建对象使用type 基础元类时,通过指定不同的内置函数的原语,可以实现很多特殊的功能,适应不同的场景,比如在某些会话调用中,惰性计算的例子。这在将来章节我们可以谈到。

目录
相关文章
|
存储 Go 索引
牢记python对象的操作方式
【6月更文挑战第20天】在Python中,`hash()`和`is`帮助确定对象的相等性。`dir()`和`vars()`揭示对象的属性和内部表示,`__slots__`优化内存使用。列表和字典结构有不同的内存和性能特性,字典使用哈希表进行快速访问。
448 5
牢记python对象的操作方式
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
258 102
|
2月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
292 104
|
2月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
247 103
|
2月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
184 82
|
25天前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
153 3
|
25天前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
333 3
|
1月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
235 3
|
26天前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
197 0
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的多面手
Python:现代编程的多面手
72 0

推荐镜像

更多