Day 2(补)

Day2

Chapter 2 数据类型与操作 data types and operators

常用内置类型 Builtin types

我们提前导入了math库,并创建了一个函数f()

在本节中,有这些基本类型:

  • 整数 integer (int)

  • 浮点数 float

  • 布尔值 boolean (bool)

  • 类型 type

严格来说,type 是一种类的对象,python 是一门“面向对象友好”的语言

 

常用内置常数 builtin constants

常数区别于变量,常数的值是固定的,不可改变的

python内置了一些常量

  • true,用于表示布尔

  • false,用于表示布尔

  • none,代表 ,用于空值

math库中的一些数学常量

  • pi,数学常数 Π = 3.141592...

  • e,数学常数e = 2.718281...

  • tau,数学常数τ = 6.283185...

  • inf,浮点正无穷大,等价于float('inf'),负无穷大用 -math.inf

常用内置运算符 builtin operators

  • 算数: + , - , * , @(矩阵乘法) , / , //(整除) , **(幂运算) , % , -(一元算符) , + (一元算符)

  • 关系: < , <= , >= , > , == , !=

  • 赋值: += , -= , *= , /= , //= , **= , %=

  • 逻辑: and , or , not

还有按位运算符,先跳过

 

整除 integer division(//)

/ 指的是浮点数除法,它的结果是一个浮点数,例如2/1的结果是2.0

// 指的是整数除法,他的计算结果是整数,舍弃余数

 

模运算或余数运算符(%)

% 代表模运算(取余数),结果为商的余数

*

例如: 5 除以 2 的结果是 2, 余数为 1 , 则 5 % 2 的结果为 1

注意 % 与 math.fmod()的区别

运算符优先级 operator order

优先顺序与结合律 precedence and associativity
运算符描述
(expressions...),[expressions...], {key: value...}, {expressions...} 圆括号的表达式
x[index], x[index:index], x(arguments...), x.attribute 读取,切片,调用,属性引用
await x await 表达式
** 乘方(指数)
+x, -x, ~x 正,负,按位非 NOT
*, @, /, //, % 乘,矩阵乘,除,整除,取余
+, - 加和减
<<, >> 移位
& 按位与 AND
^ 按位异或 XOR
| 按位或 OR
in,not in, is,is not, <, <=, >, >=, !=, == 比较运算,包括成员检测和标识号检测
not x 逻辑非 NOT
and 逻辑与 AND
or 逻辑或 OR
if -- else 条件表达式
lambda lambda 表达式
:= 赋值表达式
   

4 ** 3 ** 2 从后往前算,先 3 ** 2 再 4 ** 9

类型影响语义 teypes affect semantics

运算符的运作方式会受到运算数据的类型的影响

例如:

print( 3 * 2)

print( 3 * "p2s")

print( "data" + "whale")

输出

6

p2sp2sp2s

datawhale

 

python中的真假判断

假的真的
False True
空字符串('') 字符串('猴子')
空列表([]) 列表([1,2,3])
空字典({}) 字典({'汉堡'10'薯条'5})
None  
0 任意整数和浮点数(1/1.0)

 

短路求值 short-circuit evaluation

XYX and YX or Ynot Xnot Y
true true true true false false
true false false true false true
false false false false true true
false true false true true false
type() VS isinstance()

type("p2s") == str

isinstance("p2s", str)

  • isinstance() 比 type() 更具有稳健性 (robustness)

  • 这种做法更加符合 面向对象编程 中 继承 (innheritance) 的思想

例如,type漏了负数,isinstance解决了这样的问题

1 import numbers

2 def isNumber(x):

3 return isinstance(x, numbers.Number) #可以应对任何类型的数字

4 print(isNumber(1), isNumber(1.1), isNumber(1 + 2j), isNumber("p2s"))

true true true false

 

总结

  • Python 的类型系统很丰富,可以使用 type()查看对应的类型

  • 常数类型的值是不可修改的

  • 除法操作默认是浮点数除法,整除操作需要使用//

  • 运算符之间有运算优先级,运算符作用于不同对象之间的效果是不同的

  • 在进行逻辑判断时,会使用短路求值

本文作者:berber288

本文链接:https://www.cnblogs.com/berber288/p/17850891.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   berber288  阅读(11)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.