python 基础语法学习
C:\Users\Thinkpad\AppData\Local\Programs\Python\Python312 一、语法 弱类型语言 1. IPO程序编写方法 input process output 2. ord("北") 字符转uncode码 chr(21271) uncode码转字符 3. 文件写入 fp = open('node.txt', 'w') print('北京欢迎你', file=fp) fp.close() 4. 键盘输入 name = input("请输入您的姓名:") print("我的姓名是", name, sep='') 5. int(num) #字符串转数字 str()、float() len("abc") 获取字符串长度 type("string") # 获取变量的数据类型 id(name) #取变量在内存中的地址 6. # coding=utf8 #顶格设置文件编码 7. import keyword print(keyword.kwlist) #打印python关键字 8. _ 受保护的变量 __ 私有变量 __init()__ 初始化函数 9. 数据类型:int float str bool module complex 数据类型显示转换 int()、str()、float() 10. 复数 x = 123 + 456j #复数由实数部分和虚数部分组成 print(x.real, x.imag) print(type(x)) 11. 字符串:单引号、双引号、三单引号、三双引号 单引号双引号意义一样,在字符串中加r或R则不识别转义字符(类似于php的单引号),三引号定义多行字符串 s='HELLOWORLD' s[0] #H s[-10] #H s[2:7] #LLOWO 含2不含7 s[:5] #HELLO 默认从0开始 s[5:] #WORLD 默认到结束 s+s2 #字符串拼接 s*2 #复制字符串2次 或写成 2*s a in s # True a是s的子串 False 不是 字符串格式控制 字符串数据验证 字符串去重 s = 'sdfsdg' new_s = set(s) //转集合 list = list(new_s) //转列表 list.sort(key=s.index) //排序 print(''.join(list)) //拼接 字符串正则匹配 re.match() #查找首字符 re.search() #全局查找,但只查找一次 re.findall() #全局查找,查找所有 re.sub() #字符串替换 re.split() #分隔字符串 12. bool: True==1 False==0 虽然数据类型不同,但是相等。 13. eval: 去掉字符串的引号部分,执行里面的语句 配合input 使用自动转换数据类型 14. 运算符:/ 除完是float // 整除,除完是int 15. 系列解包赋值: a,b=10,20 # a=10 b=20 a,b=b,a #交换变量的值 16. 逻辑运算符:and、or、not 17. 没有switch 但有模式匹配,类似于switch # mathch case: case: 18. for in; for else; #循环正常执行完毕,执行else while; while else; 19. 组合数据类型:列表、元组、字典、集合 20. 序列的相关操作: +连接字符串、*重复输出字符串、s in str、str.count(x)、str.index('x')x第一次出现的位置 21. 列表:list = ['a',1,'b'] 或 list(range(1,10,2))、list.append、insert、clear、pop、remove、reverse、copy、sort for item in list: print(item) for i in range(0,len(list)): print(list[i]) for index,item in enumerate(list): print(index,item); 列表生成式的使用: list = [random.randint(1, 100) for _ in range(1, 11)] list2 = [item for item in range(1,11) if item>5] list3 = [[j for j in range(6)] for i in range(4)] //生成二维列表 22. 元组:t=('a',1,10.2); t=tuple('hello') 如果元组只有一个元素时最后一个逗号不能省 系列解包赋值:a,b,c,d=t 23. 字典:键值对,[]取值 或 d.get(key); 字典合并 "|",会替换相同的key 字典生成式: d = {item: random.randint(10,100) for item in range(1, 11)} 或 list1 = [100, 101, 102] list2 = ['php', 'java', 'python'] z = zip(list1, list2) d = {key: value for key, value in z} 24. 集合:集合是可变数据类型,集合中元素可存储不可变数据类型 操作符:交集& a&b, 并集| a|b, 差集- a-b, 补集^ a^b 25. try (raise) excepte else finally 26. 函数:php不支持位置传参 位置传参、 关键字传参(如果混合传参,位置传参在前,关键字传参在后) 可变位置参数:*param (元组) 传参可以使用*系列解包 可变关键字参数: **param (字典) 传参可以使用**系列解包 返回值为多个值时为元组 fun = lambda x,y:x+y #lambda表达式 对列表中的字典中的某个key进行排序 student_scores = [ {"name": '陈梅梅', 'score': 98}, {"name": '王一一', 'score': 95}, {"name": '张天乐', 'score': 100}, {"name": '白雪儿', 'score': 65}, ] student_scores.sort(key=lambda x: x.get('score'), reverse=True) print(student_scores) 27. 类: 1. def __init__(self,name,age): #构造方法 叫初始化方法 2. @staticmethod 修饰静态方法 3. @classmethod 修饰类方法 4. @property 方法定义为属性 调用时不需要加括号 5. @age.setter 修饰方法,表示这是一个可以修改属性的方法 6. 权限控制: _ : protected, __ : private, __init__ : 特殊方法 stu._Student__age、stu._Student__fun() 强制访问私有属性和方法,但是不推荐 7. 继承:支持多继承 class Student(Person): #继承 8. 浅拷贝:obj1 = copy.copy(obj) 产生新对象,子对象没变 深拷贝:obj1 = copy.deepcopy(obj) 产生新对象,产生子对象 28. 第三方模块安装与卸载 pip install requests / pip uninstall requests 29. 爬虫示例:安装requests 模块:pip install requests # 爬虫 import requests, re # 1. 爬数据 url = 'https://www.weather.com.cn/weather1d/101010100.shtml' res = requests.get(url) res.encoding = 'utf-8' city = re.findall('<span class="name">([\u4e00-\u9fa5]*)</span>', res.text) # 城市 ['景区', '三亚', '九寨沟', '大理', '张家界', '桂林', '青岛'] weather = re.findall('<span class="weather">([\u4e00-\u9fa5]*)</span>', res.text) # 天气 wd = re.findall('<span class="wd">(.*)</span>', res.text) # 温度 zs = re.findall('<span class="zs">(.*)</span>', res.text) # 状况 list = [] for a,b,c,d in zip(city,weather,wd,zs): list.append([a,b,c,c]) print(list) # 2.爬图片 url = 'https://www.baidu.com/img/PCfb_5bf082d29588c07f842ccde3f97243ea.png' res = requests.get(url) # 图片写入文件 with open('logo.png','wb') as file: file.write(res.content) 30. 生成excel示例 安装excel模块:pip install openpyxl # 创建excel工作本 workbook = openpyxl.Workbook() sheet = workbook.create_sheet('景区天气') # 创建工作表 # 向工作表中添加数据 for item in list: # 列表 sheet.append(item) # 插入一行数据 workbook.save('景区天气.xlsx') 读取excel示例: # 读取excel数据 workbook = openpyxl.load_workbook("景区天气.xlsx") # 读取excel sheet = workbook['景区天气'] #选择工作表 # 读取数据 list = [] for row in sheet.rows: oneRow = [] for cell in row: oneRow.append(cell.value) list.append(oneRow) 31. PDF: 读取数据 import pdfplumber with pdfplumber.open("租房合同.pdf") as pdf: for i in pdf.pages: print(i.extract_text()) print(f'------第{i.page_number}页结束') 32. jieba分词 # 中文分词 string = '' with open("中文分词.txt", 'r', encoding='utf-8') as file: string = file.read() list = jieba.lcut(string) # 分词后的list set = set(list) # 词去重 count = {} # 统计中文词出现的次数 for item in list: if len(item) <= 1: continue if item in count: count[item] += 1 else: count[item] = 1 countList = [[key, value] for key, value in count.items()] # 字典转列表 [['按照', 1], ['提示', 4]...] countList.sort(key=lambda x: x[1], reverse=True) # 排序 firstTen = countList[0:11] # 取前10项 print(firstTen) 33. 第三方模块总结: requests: 爬虫模块 pip install requests openpyxl: Excel处理模块 pip install openpyxl pdfplumber: PDF处理模块 pip install pdfplumber jieba: 中文分词模块 pip install jieba prettytable: 控制台表格 pip install prettytable wordcloud: 生成词云 pip install wordcloud 数据分析:NumPy、SciPy(Python科学计算库)、Pandas、Matplotlib和NumPy 34. 文件操作 # 写入文件,文件不存在创建文件 file = open('a.txt', 'w', encoding='utf-8') file.write('伟大的中国梦') file.close() # 读取文件 file = open('a.txt', 'r', encoding='utf-8') s = file.read() file.close() print(s) # with语句:上下文管理器,with oppen(...) as file #防止文件异常,可以不写close方法 35. json 1. python数据类型转json字符串: json.dumps(lst, ensure_ascii=False, indent=4) 2. json字符串转数据类型:list2 = json.loads(s) 36. os模块 getcwd()、listdir()、mkdir()...... 二、大模型 1. TensorFlow:pip install tensorflow 2. CIFAR-10: 一个图像分类库,可以尝试使用 3. K近邻算法:图像是个矩阵的像素点,输入图像与图像库的矩阵做减法,差值最小的可能是就图像的分类。 如果背景一样,也不适合做图像分类 4. 自然语言处理(NLP)BERT模型,采用Transformer网络架构 self-attention word2vec: 词向量模型,训练好就不变了,无法处理不同语境。 RNN: 网络模型,循环神经网络,基本使用Transformer取代了 注意力机制(self-attention):不同词,重要性不一样 5. Pytorch学习 由于需要独立显卡,学习暂停 1. 安装 anaconda,基本下一步就完成了 2. anaconda的环境安装: 1. conda create -n pytorch python=3.6 #环境名为pytorch,安装路径在E:\ProgramData\anaconda3\envs\, 因为我在第一步anaconda的安装路径指定的是E:\ProgramData 2. conda activate pytorch #激活环境 3. pip list #查看这环境中都有哪些工具包 4. conda -V 3. 下载pytorch:https://pytorch.org/ 选择stable\windows\Conda\Python\ 复制代码:conda install pytorch torchvision torchaudio cpuonly -c pytorch 4. 回到第二步激活的环境下执行 pytorch官网复制的代码,其实是安装了一些pkg到 E:\ProgramData\anaconda3\pkgs 5. 安装jupyter相关包: 1. conda install nb_conda 2. 执行jupyter:jupyter notebook 6. TensorFlow学习 1. conda create -n tf2 python=3.7 #安装环境 2. conda activate tf2 #激活环境 3. pip install tensorflow-cpu #安装tensorflow CPU版本 TensorFlow:谷歌开发的开源库,支持静态图和动态图模式,通过构建计算图来表示神经网络模型,并利用高效的C++后端执行。熟悉TensorFlow中的基本概念,如Session、Tensor、Variable、Optimizer,以及高级API如Keras等 PyTorch:Facebook推出,以其动态计算图和直观易用的API闻名,非常适合研究和原型开发。在PyTorch中,需要掌握构建模型的基本模块如nn.Module、优化器如optim,以及数据加载工具DataLoader等。 python .\run_classifier.py --task_name=MRPC --do_train=true --do_eval=true --data_dir=./GLUE/glue_data/MRPC --vocab_file=./GLUE/BERT_BASE_DIR/uncased_L-12_H-768_A-12/vocab.txt --bert_config_file=./GLUE/BERT_BASE_DIR/uncased_L-12_H-768_A-12/bert_config.json --init_checkpoint=./GLUE/BERT_BASE_DIR/uncased_L-12_H-768_A-12/bert_model.ckpt --max_seq_length=128 --train_batch_size=8 --learning_rate=2e-5 --num_train_epochs=3.0 --output_dir=./GLUE/output/
If the copyright belongs to the longfei, please indicate the source!!!