Python学习(一)内置
2022/1/2 14:09:15
本文主要是介绍Python学习(一)内置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Python内置类型
一.逻辑检测
任何对象都可以进行逻辑值的检测。一个对象默认情况下认为是真。除非改对象所属的类定义了如下方法:
- __bool__():定义该方法且返回bool值。
- __len__():定义该方法且返回数值。
出现假值的情况:
- 被定义为假值的常量:None或者False。
- 任何数值类型的0。
- 空的序列或者空集合。
1.1例子
定义测试函数和自定义类:
class Test: def __init__(self) -> None: pass class Test1: def __init__(self, *args) -> None: self.list = list(args) def __len__(self): return len(self.list) class Test2: def __init__(self, *args) -> None: self.list = list(args) def __bool__(self): return len(self.list) > 3 def check(param: bool) -> None: if param: print(f"{param}值为真") else: print(f"{param}值为假")
定义测试用的对象和数值:
number_0 = 0 constant_None = None empty_list = [] test0 = Test() test1_1 = Test1(1, 2, 3) test1_2 = Test1() test2_1 = Test2(1, 2, 3, 4, 5, 6) test2_2 = Test2(1, 2)
测试结果:
0值为假 None值为假 []值为假 <__main__.Test object at 0x00000209C10BBF70>值为真 <__main__.Test1 object at 0x00000209C10BB850>值为真 <__main__.Test1 object at 0x00000209C10BBCD0>值为假 <__main__.Test2 object at 0x00000209C10BB490>值为真 <__main__.Test2 object at 0x00000209C10BBB50>值为假
二.布尔运算
and、or、not属于布尔运算,
运算 | 结果 | 备注 |
---|---|---|
or | if x is false, then y, else x | 1 |
and | if x is false, then x, else y | 2 |
not | if x is false, then True, else False | 3 |
注释:
or
这是个短路运算符,因此只有在第一个参数为假值时才会对第二个参数求值。and
这是个短路运算符,因此只有在第一个参数为真值时才会对第二个参数求值。- not 的优先级比非布尔运算符低,因此
not a == b
会被解读为not (a == b)
而a == not b
会引发语法错误。
2.1例子
使用and:
counter1 = [] counter2 = [] if counter1 and counter2.append(1): print("表达式值为真") print(f"counter1:{counter1}") print(f"counter2:{counter2}")
测试结果
counter1:[] counter2:[]
使用or:
counter1 = [] counter2 = [] if counter1 or counter2.append(1): print("表达式值为真") print(f"counter1:{counter1}") print(f"counter2:{counter2}")
测试结果:
counter1:[] counter2:[1]
三.比较运算
在Python 中有八种比较运算符。它们的优先级相同(比布尔运算的优先级高)。比较运算可以任意串连;例 如,x < y <= z 等价于x < y and y <= z,前者的不同之处在于y只被求值一次(但在两种情况下当x < y 结果为假值时z 都不会被求值)。
除不同的数字类型外,不同类型的对象不能进行相等比较。== 运算符总有定义,但对于某些对象类型(例
如,类对象),它等于is 。其他<、<=、> 和>= 运算符仅在有意义的地方定义。例如,当参与比较的参数
之一为复数时,它们会抛出TypeError 异常。
is
和is not
运算符无法自定义;并且它们可以被应用于任意两个对象而不会引发异常。
内置方法的比较:
- x<y 调用 x.lt(y)
- x<=y 调用 x.le(y)
- x==y 调用 x.eq(y)
- x!=y 调用 x.ne(y)
- x>y 调用 x.gt(y)
- x>=y 调用 x.ge(y)
3.1例子
自定义一个类,实现__lt__
、__gt__
和__eq__
。
class Test3: def __init__(self, a, b) -> None: self.a = a self.b = b def __eq__(self, other: object) -> bool: return self.a == other.a def __lt__(self, other): return self.b < other.b def __gt__(self, other): return self.b > other.b test3_1 = Test3(1, 2) test3_2 = Test3(1, 4) print(f"==:{test3_1 == test3_2}") print(f">:{test3_1 > test3_2}") print(f"<:{test3_1 < test3_2}")
测试结果:
==:True >:False <:True
四.数字类型
存在三种不同的数字类型: 整数, 浮点数和复数。此外,布尔值属于整数的子类型。整数具有无限的精
度。浮点数通常使用C 中的double 来实现;
数字是由数字字面值或内置函数与运算符的结果来创建的。不带修饰的整数字面值(包括十六进制、八进制 和二进制数)会生成整数。包含小数点或幂运算符的数字字面值会生成浮点数。在数字字面值末尾加上’j’ 或’J’ 会生成虚数(实部为零的复数),你可以将其与整数或浮点数相加来得到具有实部和虚部的复数。
Python 完全支持混合运算:当一个二元算术运算符的操作数有不同数值类型时,” 较窄” 类型的操作数会拓 宽到另一个操作数的类型,其中整数比浮点数窄,浮点数比复数窄。不同类型的数字之间的比较,同比较这 些数字的精确值一样。
- /也称为整数除法。结果值是一个整数,但结果的类型不一定是int。运算结果总是向负无穷的方向舍入:1//2 为0, (-1)//2 为-1, 1//(-2) 为-1 而(-1)//(-2) 为0。
- %不可用于复数。而应在适当条件下使用abs() 转换为浮点数。
int
从浮点数转换为整数会被舍入或是像在C 语言中一样被截断。- float 也接受字符串”nan” 和附带可选前缀”+” 或”-” 的”inf” 分别表示非数字(NaN) 以及正或负无穷。
- Python 将pow(0, 0) 和0 ** 0 定义为1,这是编程语言的普遍做法。
- 接受的数字字面值包括数码0 到9 或任何等效的Unicode 字符(具有Nd 特征属性的代码点)。
未完待续
这篇关于Python学习(一)内置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南