1.数据类型
主要有整型、字符串类型、布尔型
1.1字符串
字符串不支持修改,若对其进行修改,会生成新的值,对原本的值不会做出修改
#例如
n1='beijing'
n2=n1
n2='shanghai'
print(n1) #beijing
print(n2) #shanghai
n3='nanjing'
n4=n3
n3='guangzhou'
print(n3) #guangzhou
print(n4) #nanjing
字符串存在一些独有功能:
1. n2=n1.rstrip() / lstrip() 去除字符串右/左边空格
2. n2=n1.strip() 去除字符串两边的空格
3. n2=n1.startwith() /endwith 开头/结尾是否为… #True / False
4. n2=n1.upper() / lower() 将字符串变成大写/小写
5. n2=n1.isdecimal() 是否为数字 #True / False
6. n2=n1.replace(“history”,“now”) 替换
7. n2=n1.split(“,”) 切割 如按"," 切割
字符串的格式化:
n2=“姓名{}”.format(name) #拼接字符串
另外还存在一种拼接:
n2=“,”.join(name) #将name中的字符串以","的形式拼接在一起
1.2 列表 [ ]
存在几种操作
1. n1.append() 添加在最后
2. n1.insert(位置,“内容”) 插入
3. n1.remove() 删除
4. n1.choice() 随机抽取
5. n1.clear() 清空列表
6. n1.sort() 排序,没有返回值,即对n1本身操作,n1会改变,一般用于列表
n1=[12,3,5,1]
n1.sort(reverse=False)
# n1 =[1,3,5,12] False从小到大 True从大到小
n2=['沈阳','建筑','大学']
n2.sort(reverse=False)
# n2=['大学', '建筑', '沈阳'] False 从小到大,True从大到小 按abc顺序排
7.sorted(n1) 排序,存在返回值,不会改变n1的值,一般用于任意可迭代对象
8.n1.reverse() 倒叙
1.3 元组 ( )
元组不可修改
1.4 字典 { }
{“key”: value}
key:必须为可哈希的值,(哈希值在内存中存放根据哈希值放在规定的位置,%位置看余数)
目前可哈希的:int、boot、str、tuple元组,只有这些可以做Key
value:可以为任意类型
v1=v2.get(“key”) 获取键key对应的值
v1=v2.keys() 获取键
v1=v2.values() 获取值
v1=v2.items() 获取键值对 # [[“age”,123], [“status”,True]]
索引:读取值
v1=v2[“age”]
v1=v2.get[“age”] 推荐这种方式,如果找不到对应的值会返回None,上面方法可能会报错
1.5 转换
其他类型转换成bool时,只有0、空字符串、空列表、空元组、空字典、None 为False,其他均为True
1.6类型分类
可哈希:int、bool、touple、str
不可哈希:list、dict
不可变:int、bool、touple、str
可变:list、dict
2.函数
2.1参数
1.若有默认参数,要放在最后,不可放在前面,python不支持
2.动态参数
* 会统一将用户传入的参数变成元组,如:args=(1,) args=(1,11) args=(9,11,123123) 可以传很多个
** 也可以穿多个,但必须有格式,将参数变成字典 如:kwargs={“k”:1} kwargs={“v1”:1,“x”:11}
* 或** 结合,可以支持传任意个,如 do_something(11,22,k9=999) 11,22 打包给*,k9=999打包给**
3.返回值
返回值可以是任意类型,若没有则返回None,返回时,可以逗号分开多个值,会把它打包成一个元组
2.2作用域
python中是以函数作为作用域,若没有函数,参数认定为全局参数
在函数中将全局变量进行引用操作,在参数前面加global
2.3生成器
yield :若在函数中如写:yield 1 则函数不执行,若有 next(f())才能运行该函数
可以减少内存消耗
# 生成 1000w个连续的数字
num_list = []
for item in range(10000000):
num_list.append(item)
#加入生成器的
def create_big_num(max_num):
num = 0
while True:
yield num
if num == max_num:
return
num = num + 1
obj = create_big_num(100000)
for item in obj:
print(item)
2.4装饰器
定义装饰器
def outer(func):
def inner():
print("before")
res = func() # 被装饰器的原函数
print("after")
return res
return inne
应用装饰器,会先输出 before 在函数运行输出完后,会输出after
@outer
def info3():
print("原来的info函数")
info3()
2.5 匿名函数
lambda 一行代码实现功能、适用于简单功能的函数,若复杂的不可
例:func = lambda a1,a2 : a1 + a2
3. 模块
内置模块
3.1 hashlib
对数据进行md5加密
import hashlib
hashlilb.md5()
3.2 json模块
json模块,是所有语言通用的
就是把别人的json模式,转变成自己的python程序,字符串的转化
import json
1.反序列化
data1=json.load(data2) 将json格式变成python字符串格式
如通过爬虫将数据爬取下来后转化成Python格式 requests.get()获取
2.序列化
data1=json.dump(data2) 将python格式转成json格式
(json相当于一个格式,所有语言都可以识别,是以字符串的形式存在的)
tips:
1.json格式里面的引号都要用双引号,若在里面出现单引号,json.load会识别不出来
2.json中true、false都是小写
3.里面不能存在元组,应该是列表格式
json中并不是可以序列化所有数据类型:
字典、列表、元组、str、int、float、True、False、None这些类型可以
如果没有,可以转成字符串
1.字典和json的区别?
字典的类型是dict,是一种数据结构,j