提要
哈喽,大家好!相信有很多在传统软件行业的小伙伴,日常接触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学习手册 原书第五版 上册》