type()
不会认为子类是一种父类类型isinstance()
会认为子类是一种父类类型class Father:
pass
class Child(Father):
pass
def main():
trueOrFalse = isinstance(Child(), Father)
print(trueOrFalse) # True
trueOrFalse = type(Child()) == Father
print(trueOrFalse) # False
if __name__ == "__main__":
main()
is
和 ==
的区别is
用于判断两个变量引用对象是否为同一个,既比较对象的地址。==
用于判断引用变量引用对象的值是否相等,默认调用对象的 eq()序列(sequence)是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放多个值的连续的内存空间,这类似于 Java 中的数组。
String、List、Tuple 都可以使用如下语法 [ ]
进行操作:
str1 = "123456789"
print(str1[0]) # 1
str1[0] = 9 # Error
list1 = ["123", "456", "789"]
print(list1[0]) # 123
list1[0] = "000" # OK
tuple1 = ("123", "456", "789")
print(tuple1[0]) # 123
tuple1[0] = "000" # Error
{ }
或者 set()
函数创建集合set()
而不是 { }
,因为 { }
是用来创建一个空字典。实际上,集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是元素是唯一的。
{ }
标识键(key) : 值(value)
的集合,键(key)必须使用不可变类型,而且在同一个字典中,键(key)必须唯一。/
与 //
/
总是返回一个浮点数,如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符 //
,//
得到的并不一定是整数类型的数,它与分母分子的数据类型有关系。print(6 / 2) # 3.0
print(7 / 2) # 3.5
print(7 / 2.0) # 3.5
print(7 // 2) # 3
print(7 // 2.0) # 3.0
print(divmod(10, 5)) # (3, 1) -> (商, 余数)
abs(-3.2) # 3.2 取绝对值
round(3.4666, 2) # 3.47 四舍五入,这里的 2 代表舍入到小数点后的位数
max(1, 9, 5.2, 3) # 9 取最大值
min(1, 9, 5.2, 3) # 1 取最小值
import math # 需要导入 math 模块使用以下函数
math.ceil(-3.2) # -3 向上取整
math.floor(-3.2) # -4 向下取整
math.fabs(-3.2) # 3.2 取绝对值,返回浮点型
math.pow(2, 3) # 8.0 2**3 运算后的值,返回浮点型
math.sqrt(9) # 3.0 开平方,返回浮点型
math.exp(1) # 2.718281828459045 返回e的1次幂
math.modf(2.3) # (0.2999999999999998, 2.0) 返回一个数的整数部分与小数部分,两部分的数值符号与该数相同,整数部分以浮点型表示
import random # 需要导入 random 模块使用以下函数
str1 = random.choice("python") # 从序列的元素中随机挑选一个元素
num1 = random.choice(range(10)) # 从 0 到 9 中随机挑选一个整数,range(10) 表示 [0, 10)
num2 = random.uniform(0, 2) # 随机生成一个实数,它在 [0, 2] 范围内
num3 = random.random() # 随机生成一个实数,它在 [0, 1) 范围内
num4 = random.randint(0, 2) # 随机生成一个整数,它在 [0, 2] 范围内
num4 = random.randrange(0, 10, 2) # 从指定范围内,按指定基数递增的集合 [0, 10) 中获取一个随机整数,集合元素值递增基数默认为1
# 也就是说从 [0, 2, 4, 6, 8] 集合中随机选一个整数
list1 = ["Python", "Java", "C#", "Go"]
list1 = random.shuffle(list1) # 将序列的所有元素随机排序,字符串、元组不可变类型不能使用
[-5, 256]
[-5, 任意正整数]
与 C 和 JAVA 不一样,Python 不支持自增( ++
)和自减( --
)
运算符优先级
Unicode
,并且把系统默认编码设置为 UTF-8
,这可以避免很多编码问题,将文本字符和二进制数据区分得更清晰,分别用 str 和 bytes 表示。ord()
可以把字符转换成对应的 Unicode
码chr()
可以把十进制数字转换成对应的字符>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>> str1 = "我和我的祖国"
>>> bytes1 = str1.encode()
>>> bytes1
b'\xe6\x88\x91\xe5\x92\x8c\xe6\x88\x91\xe7\x9a\x84\xe7\xa5\x96\xe5\x9b\xbd'
>>> bytes1.decode()
'我和我的祖国'
>>> ord('我')
25105
>>> chr(25105)
'我'
+
将多个字符串拼接起来,例如:>>> "aa" + "bb" + "cc"
'aabbcc'
+
两边都是字符串,则拼接字符串+
两边都是数字,则进行加法运算+
两边数据类型不同,则抛出异常使用字符串拼接符 +
,会生成新的字符串对象,因此不推荐使用 +
来拼接大量的字符串,推荐使用 join
函数,因为 join
函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。
strs = []
for i in range(10):
strs.append("python ")
print("".join(strs))
字符串驻留:
仅包含下划线、字母 和 数字
)会启用字符串驻留机制>>> a = "codedancing"
>>> b = "codedancing"
>>> a is b
True
>>> a = "@codedancing"
>>> b = "@codedancing"
>>> a is b
False
>>> a = "Py"
>>> b = "Torch"
>>> (a + b) is "PyTorch" # a + b 会产生新字符串
False