聪明办法学python第3次笔记

目录

目录

常用内置类型 Built-in Types

python语言对应的是双精度浮点型

 整除 Integer Division (//)

:= 海像表达式

短路求值 Short-Circuit Evaluation

 `type()` vs `isinstance()` 

 `isinstance()` 比 `type()` 更具有 `稳健性(Robustness)`

type不能判断复数

总结

 短路求值(Short-circuit evaluation)是指在评估逻辑表达式时,如果能够通过部分子表达式的值确定整个表达式的结果,那么就不再计算剩余的部分。这种机制在许多编程语言中都有应用,最常见的是在布尔逻辑运算中,比如逻辑与 (&&) 和逻辑或 (||) 操作符

逻辑与 (&&) 的短路求值

逻辑或 (||) 的短路求值

优点

答疑:

使用 isnumeric() 方法

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,因此不需要再计算第二个操作数。

优点

  1. 性能优化:避免不必要的计算,提高程序运行效率。
  2. 安全性:防止潜在的错误或异常。例如,可以在调用可能抛出异常的函数之前进行检查。

答疑:

  • 交换顺序会有不同的结果
  • 使用 isnumeric() 方法

isnumeric() 是字符串的一个方法,可以用来判断字符串是否只包含数字字符。但它不能直接用于非字符串类型的数据。小数点会被判断成false.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值