重点总结:
- python 中对象包含什么?
- python 中变量与对象的关系?
- Python 中变量的命名规则?
- Python 中能否定义常量,内置常量有哪些?
- 哪三类值会判定为假值?
1 | 对象
万物皆对象
Python 将内存中的值均包装成对象,如数据结构、函数和程序
内存像货架,一个对象就像货架上的一个货物,不用时将其移走
- 内存 ----- 货架
- 对象 ----- 货物
一个对象(货物)主要包含:
- 类型
__class__
,定义其可执行的操作,像货物的印章标明其用途 - 与类型一致的值
- 唯一的 id,用于区分其他对象,像货物在架子上的位置
- 引用计数
ob_refcnt
,用于跟踪
2 | 变量
2-1 | 什么是变量
变量是方便引用对象而起的名称,不是对象本身,就像贴在盒子上的标签
💻赋值 =
a = 7
💻多重赋值
x, y, z = 1, 2, 3
a = b = c = 1
💻互换值
a, b = b, a
💡值为[-5, 256]
范围内的变量会具有相同的 id
a, c = 1, 1
>>> id(a) # 2967746248944
>>> id(c) # 2967746248944
a, c = 1000, 1000
>>> id(c) # 2967820306256
>>> id(a) # 2967820304752
2-2 | 命名规则
变量名字应在简洁和用途表达清晰之间做出平衡
- 可用字符:
- 小写字母
a~z
- 大写字母
A~Z
- 数字
0~9
,但不能在开头 - 下划线
_
Unicode
字符
- 小写字母
- 区分大小写:
thing
、Thing
和THING
是不同的名称 - 不能是 Python 的保留字(语法关键字)
⚠️ 注意,双下划线__
开头或结束的变量是 Python 保留用法,不要自定义他们
.__name__ # 返回函数名称
.__doc__ # 返回函数 DocString
.__main__ # 主程序被赋值的特殊名字
三种命名风格:
- Camel Case:
numberOfCollegeGraduates
- Pascal Case:
NumberOfCollegeGraduates
(PEP8: 类名称) - Snake Case:
number_of_college_graduates
(PEP8: 函数、变量名称)
2-3 | 获取变量类型
>>> type(var) # M1
>>> var.__class__ # M2
# 检查类型
>>> isinstance(7, int)
True
3 | 常量
Python 内置常量,但无法定义常量
-
内置常量:
True
、False
、None
、...
、NotImplement
等 -
通常可以采取全大写表示常量
CONSTANT = 'python'
4 | 数字
开头加正负号 +-
可修改数字的正负
4-1 | 整数
Integers
既没有分数也没有小数点的数字
>>> 1
1
a = 1
>>> type(a)
int
⚠️对于十进制,0 不能放在整数开头,除非是其他进制,否则 SyntaxError
>>> 01
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers
🆕3.6版本开始,可对长数字加下划线作_
为间隔方便输入,⚠️但使用,
会被识别为元组!
>>> a = 1_000_000
>>> a
1000000
>>> 1,000,000
(1, 0, 0)
4-2 | 基数
Python 默认 10 进制,但也支持其他进制
# 整数二、八、十六进制
>>> 0b10 # b=binary
2
>>> 0o10 # o=octal
8
>>> 0x10 # x=hexadecimal
16
💻 基数 —> 字符串,输出的实际是一个表达式
v = 200
>>> bin(v), oct(v), hex(v)
('0b11001000', '0o310', '0xc8')
4-3 | 浮点数
Floating-Point Numbers
包含小数点的整数
>>> .4
0.4
>>> 5.
5.0
>>> 5.0
5.0
>>> 05.0
5.0
>>> float(5)
5.0
浮点数可在字母 e
之后包含一个十进制数形式的指数:
>>> 4.2e-4
0.00042
也可使用下划线 _
分割增加可读性
million = 1_000_000.0
整数与浮点数混合运算,生成浮点数
>>> 1+.1
1.1
4-4 | 分数
Rational Number
像 1/3
这样等同于无限循环小数的分数可以用 Fraction()
表示
from fractions import Fraction
>>> f1 = Fraction("2/3")
>>> f2 = Fraction("1/3")
>>> f1 + f2
Fraction(1, 1)
4-5 | 复数
Complex Numbers
由实部 real part 和 虚部 imaginary part 组成,也可以看作两个浮点数构成
-
定义:
j
与J
均可# 方式一 >>> a = 3 + 4j >>> a (3+4j) # 方式二 >>> z = complex(3, 2) >>> z (3+2j)
-
输出
>>> z.real # 输出实部 3.0 >>> z.imag # 输出虚部 2.0
4-6 | 基础运算
所有的数字类型都支持以下方法:
示例 | 说明 | 备注 |
---|---|---|
x + y |
加法 | |
x - y |
减法 | |
x * y |
乘法 | |
x / y |
除法,返回值始终为浮点数 | |
x // y |
整除,相当于除法向下取整,仅保留整数部分 | x 小于 y 则返回 0, 返回值为整数 |
x % y |
求余 | x 小于 y |