当前位置:   article > 正文

python复习笔记_python 友元

python 友元

C++

  • 任意一个类,最多有一个析构函数、一个拷贝构造函数
  • 基类的构造函数、析构函数都不会被子类继承
  • 友元函数不是类的成员
  • C++类中默认是private类型,要声明其他类型就要加关键字
  • 面向对象程序设计的三大特征:封装、继承、多态
  • 引入友元函数破坏了封装性
  • const char*p="ok" ,这里的p是指向字符串常量的指针而不是指向字符串的常量指针
  • 自身类对象不能成为自身类的成员
  • 类的实例化是创建对象
  • 数据封装就是将一组数据和与这组数据有关的操作组装在一起,形成一个实体,这个实体也就是类
  • 一个函数功能不太复杂,但要求频繁调用,则应把它定义为内联函数,用 inline 关键字
  • const加到非静态成员函数后面,表示这个成员函数中隐含的this指针是const指针,只允许读不允许通过this指针进行写入。加到非成员函数和静态成员函数后面则会产生编译错误。
  • 采用重载函数的目的在于使用方便,提高可读性
  • 静态数据成员要在类体外进行声明初始化
  • 实现运行时的多态采用虚函数
  • 如果类A被声明为类B的友元,则A中的成员函数可以访问B中的所有成员
  • C++中不能重载的运算符有::、 ?: 、. 、sizeof
  • 定义析构函数时要注意无形参也不可重载
  • 作用域运算符 :: 的功能是指出作用域的范围
  • 对象数组的元素可以是不同类的对象

python

  • ## 基础语法复习

不可变数据类型:数字、字符串、元组

可变数据类型:列表、字典、集合

元组中包含0个或1个元素的特殊语法规则

tup1=() #空元组

tup2=(1,) # 一个元素,需要在元素后添加逗号

集合的操作 set() 函数。集合a、b,差集: a-b 并集 :a|b 交集: a&b 对称差:a^b

优先级为 NOT AND OR


字符串常用函数

s="abcd"
s.upper() #全部的字母字符大写  多加个is则是判断是否全大写  s.isupper()
s.lower() #全部的字母字符小写						   s.islower()
s.swapcase() #将字母字符大写变小写,小写变大写
s.split(x,y) #将字符串进行切割,默认是按空格切割,返回列表。输入参数则按所给参数进行切割,y代表切后截取多少个值
s.splitline() #将字符串按行进行切割,与上面同样的操作
s.find(str) #获取str在s中出现的索引,不存在则返回-1
s.isalpha() #判断是否全为字母
s.isdigit() #判断是否全是数字
s.isalnum() #判断是否全为数字和字母

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

  • ## 字典的操作

    d={}
    d.get(key) #返回指定键的值
    d.items()  #以列表返回一个视图对象
    d.update(dict2) #把字典2的键值对更新到字典d中
    d.keys()  #返回一个键的视图对象
    d.values()  #返回值的视图对象
    d.pop(key) 	#删除字典key和对应的
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    字典元素排序

  • ## 列表函数复习

    列表可以使用+操作符进行拼接

    l=[]
    l.append() #列表尾增加一个元素
    del l[2]   #删除列表的3号元素
    l.count()  #统计某元素在列表出现的次数
    l.extend(seq) #在列表尾添加另一个序列的多个元素
    l.index()   #从列表中找出第一个匹配项的索引
    l.insert(index,obj)  #将对象插入到指定索引的位置
    l.pop(index=-1) #移除列表中的一个元素,默认最后一个,然后将值返回
    l.reverse()  #反向列表中的元素
    l.sort(key=None,reverse=False) #对列表元素进行排序,key是规则,reverse是默认升序
    l.clear() #清空列表
    l.copy() #复制列表
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

  • ## 函数和类的复习

    python 的函数参数的传递

    • 不可变类型:类似C++的值传递,如整数、字符串、元组等,只是传递了值,不会影响本身的对象。如果在函数内部修改也不会对外界产生影响,而是新生成了一个对象
    • 可变类型:类似C++的引用传递,如列表、字典、集合等,则是真正将自身传过去了,修改后外部也会产生变化。

    类的复习

    • 类初始化 def __init__(self) 构造函数
    • 类成员函数中的self代表类的实例,而非类
    • 类的私有成员就是在命名前加 __
    • 调用父类构造函数时用 父类类名.__init__(self.....)
    • 覆写父类的方法 直接将方法名写一样即可
    • 调用被重写的父类方法 super(子类名,对象).方法()
  • ## 文件操作,txt和excl等文件

    • xlwt

      1.创建一个工作簿

      xl=xlwt.Workbook(encoding="utf-8")

      2.创建一个sheet对象,第二个参数是指单元格是否允许被重置,默认为 false

      sheet=xl.add_sheet("***",cell_overwrite_ok=True)

      3.存储数据

      sheet.write(i,j,data) 第一个i代表行,j代表列,data代表参数,第四个参数是格式。行列都是从0起

      4.保存数据

      xl.save("文件路径.xls")

    • xlrd

      1.打开一个xls或者xlsx文件获取Book对象

      book=xlrd.open_workbook("文件路径和名字")

      2.获取Book对象中的所有sheet名称

      sheet=book.sheets() 以列表的形式返回

      3.对Sheet对象进行操作

      sheet.nrows 获取此sheet对象的有效行数

    • txt

      1.打开一个文件,可以是读取也可以是写入

      fp=open("路径","w或者r")

      2.写入

      fp.write(str)

      3.操作完毕后要保存

      fp.close()

    • csv

      1. 读csv文件

        import csv
        csv_reader=csv.reader(open(文件路径,encoding="utf-8"))  #读csv文件的reader()方法,将把每一行作为列表子元素返回
        
        • 1
        • 2
      2. 写csv文件

        import csv
        list=[1,2,3,4]
        out=open(文件路径.csv,'w',newline='')   #打开一个csv文件
        csv_writer=csv.writer(out,dialect='excel') #再用csv的writer方法操作
        csv_writer.writerow(list)  #再输入
        out.close()  #保存输入,关闭
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
  • ## 数据库的操作流程

    SQLite的基本操作

    1.创建表
    create table 表名
    (	列名 1 数据类型 字段属性,
    	.........
    );
    2.向表中插入数据
    insert into 表名(列名1,列名2,.......) values(1,2,.....);
    3.修改表中的数据
    update 表名 set 列名1=1,...... WHERE 条件表达式;
    4.删除数据
    delete from 表名 where 删除条件;
    5.查询数据
    select 列名1,列名2,.....列名n from 表名 where 查询条件;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    使用python 对SQLite数据库操作

    1.导入模块
    2.建立数据库连接
    con=sqlite3.connect(数据库名)
    3.创建游标对象
    cur=con.cursor()
    4.编写SQL语句
    5.调用execute()方法执行SQL语句
    cur.execute(sql,data) #执行单条SQL语句
    cur.executemany(sql,data) #执行多条sql语句
    6.获取游标查询的结果
    cur.fetchone()  #获取下一条记录
    cur.fetchmany(n) #获取n条记录
    cur.fetchall() #获取所有记录
    7.数据库的提交和回滚
    con.commit()  #保存操作
    con.rollback() #回滚到上次保存的状态
    8.关闭对象
    cur.close()  #关闭游标
    con.close()  #关闭连接
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • ## 数据分析的操作流程

  • numpy库用法

    主要的多维数组:ndarray

    import numpy as np
    生成ndarray对象  1
    data=np.array(列表对象/元组对象)
    创建特殊数组
    arr=np.zeros(,)  #生成多少行列的全零数组  还有np.ones()全是1,np.eye()对角线是1其余0
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • Pandas库用法

    1. Series对象的建立
    import pandas as pd
    list=[1,2,3]
    series_list=pd.Series(list)  #没有给指定索引则默认从0开始
    series_list=pd.Series(list,index=['a','b','c']) #指定了索引则按索引来
    用字典来生成的话索引就直接是字典的键了,而内容则是字典键对应的值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    1. DataFrame对象的建立
    import pandas as pd
    1.用字典建立
    d={"name":['tom','cat','lucy'],"age":[12,13,15],"id":['0001','0002','0003']}
    df1=pd.DataFrame(d) #将会以字典d的键为列索引,默认行索引为0,1,2....
    
    
    常用操作
    dataframe对象.get('列索引')  #返回一个Series对象 可以转成列表对象
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • Matplotlib库的用法

    一般使用 matplotlib库中的 pyplot

    import matplotlib.pyplot as plt
    plt.figure(figsize=(num1,num2))  #设置分析的图的大小num1*num2大
    plt.plot(x,y,label="")   #折线统计图 x,y轴,label是图例
    plt.bar(x,y,label="")    #柱形统计图 x,y轴,laber是图例
    plt.xlabel()  #x轴的标签
    plt.ylabel()  #y轴的标签
    plt.legend(loc=str) #显示图例,loc=决定显示在哪个地方,str是字符串,可以是str='upper right' 
    plt.title()  #统计图的标题
    plt.show()  #开始显示图
    plt.close()  #关闭图
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • ## GUI的基本流程

    使用 Tkinter库进行

    import tkinter as tk
    win=tk.Tk()  #建立一个窗口
    win.title("示例")  #将窗口标题改为内容
    建立标签组件
    lab=tk.Label(win,text="标签组件要显示的内容")  #设立一个标签组件
    lab.grid(row=2,column=0,pady=5,sticky='e') #显示在第3行第1列,靠右显示
    建立文本框组件
    ent=tk.Entry(win,textvariable='待设置的变量的内容')  #建立文本框组件 获取输入内容,也可以显示变量内容
    ent.grid(row=2,column=0,pady=5,sticky='e') #显示在第3行第1列,靠右显示
    建立按键组件
    but=tk.Button(win,text="设置想在按键上显示的内容",width=10,command=待执行的函数名)
    but.grid(row=2,column=0,pady=5,sticky='w')  #在3行1列显示 ,居中显示
    消息框组件
    import tkinter.messagebox as messagebox		#导入对应组件
    messagebox.showinfo(title='提示',message="显示的内容")  #弹出一个提示消息框
    messagebox.showwarning(title='警告',message="显示的内容")  #弹出一个警告消息框
    messagebox.showerror(title='错误',message="显示的内容")  #弹出一个错误消息框
    建立窗体变量
    e=tk.StringVar()  #建立一个叫e的窗体变量
    e.get()   #可以获取Entry组件框里的内容
    e.set(str) #将str内容设置给e,并且通过文本框里的textvariable能改变文本框的内容
    win.mainloop() #显示窗体
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/531557
推荐阅读
相关标签
  

闽ICP备14008679号