目录
目录
`isinstance()` 比 `type()` 更具有 `稳健性(Robustness)`
isnumeric() 是字符串的一个方法,可以用来判断字符串是否只包含数字字符。但它不能直接用于非字符串类型的数据。小数点会被判断成false.
常用内置类型 Built-in Types
我们提前导入了 `math` 库,并创建了一个函数 `f()` (内容并不重要)
- 整数 Integer(int)
- 浮点数 Float
- 布尔值 Boolean(bool)
- 类型 Type(是的,“类型”也是种类型!)
严格的来说,Type 是一种 `类` 的 `对象`
python语言对应的是双精度浮点型
@:矩阵乘法
# 常用内置运算符 Builtin Operators
- 算术:`+`, `-`, `*`, `@`, `/`, `//`, `**`, `%`, `-` (一元算符), `+` (一元算符)
- 关系:`<`, `<=`, `>=`, `>`, `==`, `!=`
- 赋值: `+=`, `-=`, `*=`, `/=`, `//=`, `**=`, `%=`
- 逻辑:`and`, `or`, `not`
// 整除
= #赋值
== #相等判断
c += 2 # c = c + 2
整除 Integer Division (//)
`/` 指的是**浮点数**除法,它的结果是一个浮点数,例如 `2/1` 的结果是 `2.0`
`//` 指的是**整除**除法,它的计算结果是整数,舍弃余数
:= 海像表达式
优先顺序 Precedence
结合律 Associativity:
print(4**3**2) # 262144(不是 4096) # 指数运算从右向左算
浮点数误差
短路求值 Short-Circuit Evaluation
def yes():
return True
def no():
return False
def crash():
return 1/0 # 会崩溃!
print(no() and crash()) # 成功运行!
print(crash() and no()) # 崩溃了!
print (yes() and crash()) # 因为上一行崩溃了,所以这行不会被运行,就是运行也会因为短路求值崩溃
换成or:
print(yes() or crash()) # 成功运行
# print(crash() or yes()) # 崩溃了
print(no() or crash()) # 因为上一行崩溃了,所以这行不会被运行,就是运行也会因为短路求值崩溃
`type()` vs `isinstance()`
print(isNumber(1), isNumber(1.1), isNumber(1+2j), isNumber("p2s"))
`isinstance()` 比 `type()` 更具有 `稳健性(Robustness)`
type不能判断复数
- 这种做法更加符合 `面向对象编程` 中 `继承(inheritance)` 的思想
import numbers
def isNumber(x):
return isinstance(x, numbers.Number) # 可以应对任何类型的数字
print(isNumber(1), isNumber(1.1), isNumber(1+2j), isNumber("p2s"))
True True True False
总结
- Python 的类型系统很丰富,可以**使用 `type()` 查看对应的类型**
- 常数类型的**值是不可修改的** 例如 Π
- 除法操作**默认是浮点数除法**,整除操作需要使用 `//`
- 运算符之间有运算优先级,运算符作用于不同对象之间的效果是不同的
- 在进行逻辑判断时,会使用**短路求值**
短路求值(Short-circuit evaluation)是指在评估逻辑表达式时,如果能够通过部分子表达式的值确定整个表达式的结果,那么就不再计算剩余的部分。这种机制在许多编程语言中都有应用,最常见的是在布尔逻辑运算中,比如逻辑与 (&&
) 和逻辑或 (||
) 操作符
例如:
逻辑与 (&&
) 的短路求值
对于逻辑与操作符,如果第一个操作数为 False
,则整个表达式必定为 False
,因此不需要再计算第二个操作数。
逻辑或 (||
) 的短路求值
对于逻辑或操作符,如果第一个操作数为 True
,则整个表达式必定为 True
,因此不需要再计算第二个操作数。
优点
- 性能优化:避免不必要的计算,提高程序运行效率。
- 安全性:防止潜在的错误或异常。例如,可以在调用可能抛出异常的函数之前进行检查。
答疑:
- 交换顺序会有不同的结果
-
使用
isnumeric()
方法