【Python】:老鸟的入门笔记(2)

Python
208
0
0
2024-01-06

提要

哈喽,大家好!相信有很多在传统软件行业的小伙伴,日常接触JS、Java、C#这类语言多一些,很少用到Python。但是Python确实很香(例如:AI、数学、绘图等),早晚会碰上它。对于我们这些懂编程但不懂Python的“老新手”来说,只有系统、全面地科普一下Python基础知识,才能更好、更高效地搬运的代码。下面是我整理的一些Python3笔记,分享给大家。

TL;DR

* 数值类型:整数、浮点数、小数、分数、复数、进制

* 动态类型:变量、对象与引用

一、数值类型

1.1 基础

整数:

  • 只有整数这一种类型(不再细分为一般整数和长整数)
  • 拥有无穷精度(只要内存空间够)
2 ** 1000

浮点数:

  • 浮点数带一个小数点,也可以加上一个科学技术标志e或E。
  • 浮点数在标准CPython中采用C语言中的“双精度”来实现。
  • 浮点数的数值比较不会总是按照你的预期工作
1.234
1.23e3
1.1 + 2.2 == 3.3
1.1 + 2.2 > 3.3

进制:

  • 二进制:0b111、0B1000
  • 十六进制:0xFF、0X100
  • 八进制:0o77、0O100
  • hex(I)、oct(I)、bin(I) 可以把一个整数转换为对应进制的字符串
  • int(str, base) 可以把给定进制的字符串转换为一个整数
0b111, 0B1000
0xFF, 0X100
0o77, 0O100
hex(1024),oct(1024),bin(1024)
int('0x400',16), int('0o2000',8), int('0b10000000000',2)

复数:

  • 3+4j
  • complex(3, 4)
3+4j
complex(3,4)
type(3+4j)

混合数值类型的运算:

  • 40+3.14
  • 在混合类型的表达式中,Python首先将被操作的对象转换成其中最复杂的操作数类型,然后再对相同类型的操作数进行数学运算。
  • 复杂度:整数 < 浮点数 < 复数
  • 要记住,所有这些混合类型转换仅适用于数值类型,一般来说,Python 不会在其他的类型之间进行转换。
40+3.14
type(40 + 3.14)
"hello world:"+100

链式比较:

  • Python 允许我们把多个比较链接起来执行范围测试。
2 < 3 < 4 < 5 < 6

1.2 除法

Python 有三种风格的除法:经典除法、向下取整除法和真除法,以及两种不同的除法运算符。

  • 运算符 // 在 Python 2.X 和 Python 3.X 都是执行向下取整除法。// 把结果向下截断到它的下层,即真正结果之下的最近的整数。其效果是向下舍入。
  • 运算符 /
  • 在 Python 2.X 中表示经典除法,如果两个操作数都是整数的话,执行截断的整数除法;否则,执行浮点除法(保留余数)。
  • 在 Python 3.X 中总是执行真除法,不管操作数的类型,都返回包含任何小数部分的一个浮点数结果。
10/4
10/4.0
10/4
10//4.0
5//2
-5//2
5//-2
9//3

1.3 小数(Decimal)

  • 从功能上讲,小数对象很像浮点数,但它们有固定的位数和小数点。因此,小数(Decimal)是精度固定的浮点数。
  • 小数类型对表达固定精度的特性(例如货币的累加)以及对实现更好的数值精度而言,是一个理想的工具。
0.1 + 0.1 + 0.1 - 0.3

from decimal import Decimal
Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3')

1.4 分数(Fraction)

  • 数值类型Fraction(分数),实现了一个有理数对象。
  • 本质上,它显式地保持了一个分子和一个分母,从而避免了浮点数运算的某些不精确性和局限性。
from fractions import Fraction
Fraction(1,10) + Fraction(1,10) + Fraction(1,10) - Fraction(3,10)

二、变量、对象和引用

  • 变量创建:一个变量(也就是变量名),就像 a,当代码第一次给它赋值时就创建了它。之后的赋值将会改变已创建的变量名的值。
  • 变量类型:变量永远不会拥有任何和它关联的类型信息或约束。类型的概念存在于对象而不是变量名中。变量原本是通用的,它只是在一个特定的时间点,简单地引用了一个特定的对象而已。
  • 变量使用:当变量出现在表达式中时,它会马上被当前引用的对象所代替,无论这个对象是什么类型。
a = 343
print(id(a))
print(type(a))

a = 'python'
print(id(a))
print(type(a))

a = 343
b = a

print(id(a))
print(id(b))

参考:

《Python学习手册 原书第五版 上册》