python这门语言属实很强大,之前早就学过,但是心里没有什么底,一提到Python,能够想到的不多,所以写几篇博客,总结总结。熟悉熟悉。

数据类型和变量

一、数据类型

  • 整数
  • 16进制用​​0x​​前缀。
  • 存储长度是有大小限制的。
  • 浮点数
  • 比较大的浮点数需要用科学记数法表示,例如:把10用e替代,1.23×109 1.23 × 10 9 就是​​1.23e9​
  • 超出一定范围就是直接表示​​inf​​无限大。
  • 字符串
  • 布尔值
  • 空值
  • 是Python中一个特殊的值,用​​None​​​表示。​​None​​不能理解为0,他是一个空值。

对象

变量本身类型不固定的语言称之为动态语言,而静态语言在定义变量时必须指定变量类型。如果赋值的时候类型不匹配,就会报错。

Python属于一门动态语言,而Java、C++都属于静态语言,所以Python比较灵活。

任何数据都可以看作是一个对象,而对象就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量关联起来。

对变量赋值​​x = y​​​ ,是把变量​​x​​​指向真正的对象,该对象是变量​​y​​​所指向的。随后对变量​​y​​​的赋值不影响对量​​x​​的指向。

常量

在Python中,通常用全部大写的变量名表示常量。

PS:整数的除法,有两种:

  • ​/​​两个整数除完的结果为浮点数。
  • ​//​​地板除,两个整数除完的结果为整数。

二、字符串和编码

2.1-编码

  • ASCII
  • 编码有127个字符,保存一些英文字母、数字、符号。
  • 单字节
  • Unicode
  • 现代操作系统和大多数编程语言都是直接支持Unicode。
  • 双字节
  • UTF-8
  • 可变长编码,可根据类型编码长度不同。
  • 一个中文通常占三个字节。一个英文只占1个字节。

2.2-字符串

在Python3的版本中,字符串是以​​Unicode​​编码的,所以说,Python的字符串支持多语言。

单字符的编码,Python提供了以下操作:

  • ​ord()​​函数获取字符的整数表示。
  • ​chr()​​函数把编码转为对应的字符。
2.2.1-​​"Abc"​​​和​​b"ABC"​​的区别

显示的内容都是一样的。

但是:

  • 前者是​​str​​,一个字符对应若干个字节。
  • 后者​​bytes​​的每个字符都只占用一个字节。
2.2.2-编码和解码
  • ​encode()​​​方法可以将​​str​​转换为相应的bytes。
  • ​decode()​​方法将bytes编码为str。
  • 可以传入​​errors='ignore'​​忽略错误的字节。
2.2.3-计算长度

​len()​​计算字符串含有多少个字符。

如果将字符串转换为bytes,那么计算的就是字节数。

2.2.4-文件设置编码

通常我们会在.py开头加上两行注释

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
  • 第一行注释是告诉​​linux/OS X​​系统,这是一个Python可执行程序。
  • 第二行注释告诉编译器按照UTF-8编码读取源代码。
  • 当然,你还需要设置你的py文件编码为UTF-8
2.2.5-格式化

在Python中,用两种方式:

  • 采用的格式化方式和c语言是一致的,用​​%​​实现。
  • 格式例子:​​"hello %s %4d %04d %-4d" % ("world",2,2,2)​
  • 中间用​​%​​​相隔,而不是​​,​​,后边的值需要用括号括起来。
  • Ps:​%%​​​来转义,可以输出​​%​
  • ​format()​​也是一种格式化的方法。
  • 格式:​​'Hello, {0}, 成绩提升了 {1:.1f},{2},{3}'.format(arg1,arg2,arg3)​
  • 前边的0,1,2作为占位符,替换后边的参数。

三、list、tuple、dict、set

list

  • 有序集合
  • 和其他语言不一样的是,元素数据类型可以不一样
定义

​a = []​

元素个数

​len(list)​​返回元素个数

获取

和数组类似,用下标进行访问每一个元素。从下标​​0​​开始。

​-1​​做索引可以直接获取最后一个元素。

添加
  • ​appene()​​添加至末尾
  • ​insert(index,obj)​​添加到指定位置(index)
删除
  • ​pop()​​删除末尾的元素。
  • ​pop(index)​​删除指定位置的元素。

tuple

  • 有序列表
  • 一旦初始化不能修改。在一些场景下,其实tuple很有用。
  • 元素类型可以不一致。

可以像使用list那样获取元素。但是不能修改、添加、删除。

一定要理解这个的​​不变​​。如果元素是一个对象,不变的是他的引用,而不是他的值。它的值你是可以修改的。

定义

​a = ()​

  • 括号里面不写元素的话,a为空tuple
  • 有一个的时候,需要加上逗号。
  • 有多个的时候,以逗号分隔。

dict

  • 字典​​dictionary​
  • 类似于其他语言的map,使用键值对进行存储。
  • key的类型可以是字符串、数字、元组。
通过​​in​​判断key是否存在
  • ​key in d​​ return boolean;
  • ​get(key,args)​
  • 若存在返回value
  • 否则返回args。
删除key

​pop(key)​​,对应的value也会从dict中删除。

dict内部存放的顺序和key放入的顺序是没有关系的。

清空字典

​clear()​

删除字典

​del dict​

输出字典

​str(dict)​

与list相比:

list

dict

查找和插入的速度极快,不会随着key的增加而变慢。

查找和插入的时间随着元素的增加而增加。

需要占用大量的内存,内存浪费多。

占用空间小,浪费内存很少。

所以,dict是用空间换时间。

key不可变性

dict中的key必须为不可变对象

因为dict在高速查找的时候,用哈希算法通过key计算位置。


set

  • 和其他语言相似,不能够重复
  • 没有顺序
创建
  • ​a = {value1,value2,value3}​
  • ​a = set(value)​
添加
  • ​add()​
  • ​update()​
删除
  • ​remove(x)​​若元素不存在,会报错。
  • ​discard(x)​​若元素不存在,不会发生错误。
  • ​pop(x)​​随即删除一个元素。
元素个数

​len(s)​

清空集合

​clear()​