python基础知识(一)
编码相关
文件存储时,使用某种编码,打开时就需要使用相同的编码,否则就会乱码。字符底层存储时本质上都是0101010101010101。 字符和二进制的对应关系(编码):
- ascii编码,256中对应关系。
- gb2312,gbk,中文和亚洲的一些国家【中文是2个字节】
- unicode,ucs2/ucs4,包括现在发现的所有文明。
- utf-8编码,【中文是用几个字节?3字节】
python
data = "中"
res = data.encode('utf-8')
print(res) # b'\xe4\xb8\xad'
data = "国"
res = data.encode('gbk')
print(res) # b'\xb9\xfa'
计算机中的单位
位/字节/KB/MB/GB
字符串格式化
a1 = "我是{},年龄{}".format("马X祺", 22)
a2 = "我是%s,年龄%d" % ("丁X鑫", 22,)
name = "XX少年团"
time = 20XX
a3 = f"name:{name},time:{time}"
print(a1)
print(a2)
print(a3)
数据类型
常见数据类型:['int', 'bool', 'str', 'list', 'tuple', 'dict', 'set', 'float', 'None']
--转换为布尔值为False:'None', 0
--转换为布尔值为Turn:'int', 'bool', 'str', 'list', 'tuple', 'dict', 'set', 'float'
--可变:'list', 'dict', 'set'
--不可变:'int', 'bool', 'str', 'tuple', 'float', 'None'
--可哈希:'int', 'bool', 'str', 'tuple', 'float', 'None'
--不可哈希:'list', 'dict', 'set'
--字典的键/集合的元素必须是可哈希的类型('list', 'dict', 'set'不能座位字典的键和集合元素)
主要数据类型:
--str:
--独有功能::split/lower/start switch/split/strip/join
str不可变,在执行大部分功能时,不会对原数据字符串进行修改,而是生成新的内容
--公共功能:取长度(len)/索引(仅获取)/切片(仅获取)/for循环/判断是否包括
--list(列表):
--独有功能:append/insert/remove/pop...
list可变,很多功能都是对原字符串进行修改
--公共功能:取长度(len)/索引(可以修改原数据)/切片(可以修改原数据)/for循环/判断是否包括
--dict:
--独有功能:get/keys/items/values
--公共功能:取长度(len)/索引/for循环/判断是否包括(判断键时效率很高)
运算符
一般:
1>10 and 1<10 # --->turn or false
特殊逻辑运算(整体结果取决于谁,结果就等于谁):
a1 = 1 and 2 # --->2
a2 = [] or 10 # --->10
a3 = "原神" or [] # --->"原神"
推导式(简化生成数据)
data = []
for i in range(10):
data.append(i)
data = [i for i in range(10) ]
data = [i for i in range(10) if i<5 ] # --->[0,1,2,3,4]
函数编程
函数基础知识:
--定义
--参数:
--概念:位置传参/关键字传参/参数默认值/动态参数(*args/**kwargs)
--返回值:
--函数中一但遇到return就立即返回,且后续代码不执行,且默认返回值(None)
函数进阶知识:
--python中是为函数为作用域
--全局变量and局部变量:
--建议:
--全局变量大写,局部变量小写,用_链接.
--在局部变量中使用global关键字,global作用:说明该局部变量是引用全局的,而不是在局部内新建的
内置函数('python内自带提供的函数'):
--bin/hex/odc/max/min/divmod/sorted('数字可以排序,中文,标点排序依据unicode编码')/open('文件操作')
文件操作:
--基本操作:打开,操作,关闭;为了防止忘记关闭文件,可以用with
--打开文件时的模式:
-r/rb,读 [读时文件不存在,报错]
-w/wb,写/清空写 [文件不存在时,会自动新建]
-a/ab,追加 [文件不存在时,会自动新建]
[如果路径(目录)不存在,全报错]
os.makedirs/op.path.exsits [判断是否存在,不存在新建路径(目录)]
模块
模块的分类:
--自定义模块:
--os.path:导入模块时,python会到那个目录去找模块
--不要与python内置模块or第三方模块同名
-- import/form xx import xx
--内置模块:
time/datetime/json/re/random/os...
查看当前目录夏所有文件:os.listdir("获取一级目录")/os.walk('获取所有目录')
--时间模块:时间戳/daretime/字符串 # 三者可以互相转化
--json模块:
--JSON本质时字符串,有一些自己的格式要求,PS:无元组/无单引号
--json.dumps序列化时,只能序列化python常用数据类型
--re模块:
--元字符:
. 匹配除换行符以外的任意字符
\w 匹配字海或数字或下划线
\S 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\^ 匹配字符串的开始
\$ 匹配字符串的结尾
\W{
大写} 匹配非字母或数字或下划线
\D 匹配非数字
\S{
} 匹配非空白符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[ ...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符
--量词:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{
n} 重复n次
{
n,} 重复n次或更多次
{
n,m} 重复n到m次
--贪婪匹配&惰性匹配:
.* 贪婪匹配
.*? 惰性匹配
--第三方模块:
requests/openpyxl/python-docx/flask/bs4