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. 逻辑运算符:andornot

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/

 

posted @ 2024-08-23 14:14  龍飛鳯舞  阅读(13)  评论(0编辑  收藏  举报