第四周学习总结与心得

时间:2021-12-11 16:49:18

多重继承

  • 一个类可以同时有多个父类,可以继承这些父类的属性;也可以是A类继承了B类,而B类又继承了C类。

  • 如果子类继承的父类中的属性,在多个父类中都有,那么子类在搜索属性和方法时会依据C3算法:会优先继承放在左边的父类的属性;如果左边的父类中没有,但是这个父类的父类中有,这个子类搜索时会优先搜索同一层次的父类。

正则表达式

  • 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。re 模块使 Python 语言拥有全部的正则表达式功能。compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

  • 例:

def main():
    pattern = re.compile(r'1[345789]\d{9}')  #使用re的一般步骤是先使用re.compile()函数,
    # 将正则表达式的字符串形式编译为Pattern实例
    sentence = '我的手机号是13512346789不是13300998765,而是愚蠢的13864852546'
    mylist = pattern.findall(sentence)  # findall寻找所有,输出是一个列表
    print(mylist)
    for temp in pattern.finditer(sentence):  # finditer也是寻找所有,但是输出是一个迭代的,可以一个个输出
        print(temp.group()) # group输出匹配的内容
  • sub表示替换,将搜索的内容替换为自己的内容。flags = re.I或IGNORECASE表示无视大小写
  • map函数可以将列表,元组按指定函数进行遍历转换
  • (?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp),python中需要写(?P<name>exp),这样的好处是可以分部取出需要的数据
# 元字符
"""# . 匹配除换行符以外的任意字符 # \w 匹配字母或数字或下划线或汉字 # \s 匹配任意的空白符 # \d 匹配数字 # \b 匹配单词的开始或结束 # ^ 匹配字符串的开始 # $ 匹配字符串的结束"""
# 重复
"""# * 重复零次或更多次 # + 重复一次或更多次 # ? 重复零次或一次 # {n} 重复n次 # {n,} 重复n次或更多次 #{n,m} 重复n到m次"""
  • 在输入指令是需要r'str'表示原始输入,这样r之后的内容会被完整输出。

Git

  • git的安装确认。
    1.git –version。
    2.git init初始化Git仓库。
    3.git add 文件名。表示添加。git add .表示添加所有文件
    4.git status确认状态。git config –global user.email ‘邮箱名’。git config –global user.name ‘用户名’
    5.git commit -m ”添加提交的原因。git log查看日志。git rm表示删除,git check out表示找回。print working directory
    6.cat 文件名表示访问文件内容。git branch查看分支。git branch 文件名 修改分支。git checkout文件名 切换分支
    7.git merge 文件名 表示合并。git branch -d +分支名 表示删除分支

多线程和多进程

  • 多线程
    然后一个人提成执行效率,缩短程序的执行时间
    守护线程 - 不值得保留的线程 - 其他线程如果都执行完毕了那么守护线程自动结束
    daemon=True - 将县城设置为守护线程
    创建线程的两种方式
    1. 直接创建Thread对象并通过target参数指定线程启动后要执行的任务
    2. 继承Thread自定义线程 通过重写run方法指定线程启动后执行的任务

如果多个任务之间没有任何的关联(独立子任务)
那么我们推荐使用多进程
Information Technology
摩尔定律
安迪比尔定律
反摩尔定律

  • 当有多个线程同时访问一个资源时,就有可能因为竞争资源导致状态错误,所以需要上一个锁作为保护from threading import Thread, Lock
from threading import Thread, Lock
from time import sleep


class Account(object):

    def __init__(self):
        self._balance = 0
        self._lock = Lock()

    @property
    def balance(self):
        return self._balance

    def deposit(self, money):
        if money > 0:
            self._lock.acquire()
            try:
                new_balance = self._balance + money
                sleep(0.01)
                self._balance = new_balance
            finally:
                self._lock.release()


class AddMoneyThread(Thread):

    def __init__(self, account):
        super(AddMoneyThread, self).__init__()
        self._account = account

    def run(self):
        self._account.deposit(1)


def main():
    account = Account()
    tlist = []
    for _ in range(100):
        t = AddMoneyThread(account)
        tlist.append(t)
        t.start()
    for t in tlist:
        t.join()
    print('账户余额:%d' % account.balance)


if __name__ == '__main__':
    main()

个人心得

这周进行了这一个月的考核测试,如果不过还会被留级,感觉很是难受,现在心中很慌。大学毕业算到现在也有九个月了,如果跟着这个班毕业的话,那也可以算是整一年的毕业生,可以称为社会人了。入了社会不像以前一样可以理所当然的跟父母索要生活费了,此时如果还不能自立,那跟社会中的米虫又有什么区别。现代人对啃老实在是不再较真了,那些买房的,让父母掏钱,又有几个人会在意,又有几个人会觉得羞愧,媒体也不会再对掏空父母的积蓄就为了那一套房子进行报道。我不愿做这类人,那必然是需要自己努力的,此次的考试,我认为自己是没有什么问题的,虽然不能够很快的解决,但是如果时间充裕,我觉得我都能搞定(可能会有些差池)。现在我也不奢求能很快的解决问题,因为这是需要经验的,我只希望自己能一如既往的努力,迎难题时,进须上。