Day 2(补)
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
X | Y | X and Y | X or Y | not X | not 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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步