Python小知识(一)

  1. Python 数据类型
  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)

  1. type() 和 isinstance() 的区别
  • 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()

  1. is== 的区别
  • is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。
  • == 用于判断引用变量引用对象的值是否相等,默认调用对象的 eq()

  1. Python 字符串
  • Python 没有单独的字符类型,一个字符就是长度为 1 的字符串
  • Python 字符串不能被改变,向一个索引位置赋值,比如 str[0] = ‘m’ 会导致错误

  1. String、List 和 Tuple
  • String、List 和 Tuple 都是内置序列
  • String 与 Tuple 不可变
  • Tuple的核心特点是:不可变序列,访问和处理速度比 List 快

序列(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

  1. Set 、List 与 Dictionary
    Set、List、Dictionary 都是内置可变序列。
  • 集合是无序可变序列,基本功能是进行成员关系测试和删除重复元素,可以使用大括号 { } 或者 set() 函数创建集合
    创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

实际上,集合底层是字典实现,集合的所有元素都是字典中的“键对象”,因此是元素是唯一的。

  • 列表是有序可变序列,用于存储任意数目、任意类型的数据集合
  • 字典是有序(Python3.6及以后)可变序列,字典当中的元素是通过键来存取的,而不是通过偏移下标存取,字典用 { } 标识
    字典是一种映射类型,它是一个无序的 键(key) : 值(value) 的集合,键(key)必须使用不可变类型,而且在同一个字典中,键(key)必须唯一。

  1. 运算符 ///
    在不同的机器上浮点运算的结果可能会不一样,在整数除法中,除法 / 总是返回一个浮点数,如果只想得到整数的结果,丢弃可能的分数部分,可以使用运算符 //// 得到的并不一定是整数类型的数,它与分母分子的数据类型有关系。
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) -> (商, 余数)

  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)		返回一个数的整数部分与小数部分,两部分的数值符号与该数相同,整数部分以浮点型表示

  1. 常见随机数函数
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)		# 将序列的所有元素随机排序,字符串、元组不可变类型不能使用

  1. 整数缓存问题
  • 在 Python 解释器命令行中执行,Python 仅仅对比较小的整数对象进行缓存,范围为[-5, 256]
  • 在 PyCharm 或者保存为文件执行,解释器做了一部分优化,范围是[-5, 任意正整数]

  1. 与 C 和 JAVA 不一样,Python 不支持自增( ++ )和自减( -- )

  2. 运算符优先级

  • 乘除优先加减
  • 位运算、算术运算符 > 比较运算符 > 赋值运算符 > 逻辑运算符

  1. Python3 中的 Unicode
    Python3 一开始就支持 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)
'我'

  1. 字符串拼接
    可以使用 + 将多个字符串拼接起来,例如:
>>> "aa" + "bb" + "cc"
'aabbcc'
  • 如果 + 两边都是字符串,则拼接字符串
  • 如果 + 两边都是数字,则进行加法运算
  • 如果 + 两边数据类型不同,则抛出异常

使用字符串拼接符 +,会生成新的字符串对象,因此不推荐使用 + 来拼接大量的字符串,推荐使用 join 函数,因为 join 函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。

strs = []

for i in range(10):
    strs.append("python ")

print("".join(strs))

  1. 字符串驻留机制

字符串驻留:

  • 仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中
  • Python 支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线、字母 和 数字)会启用字符串驻留机制
>>> 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

你可能感兴趣的:(Python)