人生中的第一篇博客

人生中的第一篇博客

 毫无疑问,这可能是一篇很水的博客,毕竟不知道写些什么,这是我学习PYTHON的第2周,感觉不得不记录点什么了。

这周真的是个恐怖的周,来的第一个整周就来了第一场考试,想想考的都是不在的时候学的东西还有点小激动,于是光荣的考了一整天,我觉的我必须写点啥来记录我的遭遇了。
从开始学习PYTHON开始我就被其代码的简洁程度震惊了,往往只JAVA里要十行的代码他仅仅需要四五行,
也被它不拘一格的代码方式吓到了,这真的是个有趣的语言
下面我就对自己本周学的一些东西碎碎念一下

-

一个工具

这是个用于团队合作做代码工具,GIT,原来有接触过这个软件,现在仔细学习了一下,发现它是真的好用。。。。
这里就随便给点里面用到的简单命令

git init
git add .
git status
git commit -m ''
git rm
git checkout
git reset
git log
git remote add origin https://git.coding.net/coc_k/test.git
git push -u origin master
git clone https://git.coding.net/coc_k/test.git
git branch 查看分支
git branch new-cool-function  建造一个叫new-cool-function的分支
git checkout new-cool-function  切换分支
git marge new-cool-function 合并分支
git branch -d new-cool-function 删除分支

关于正则表达式

这是个恐怖的东西啊,好多要记的东西,学的时候感觉脑壳要炸了,可是它很重要很重要很重要,于是老师提供了个简单粗暴的方法,没错,就是从网上扒,因为这些实在太多这里给两个参考网站

[正则表达式30分钟入门](https://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html)
[正则表达式大全参考](http://www.jb51.net/article/76901.htm)

关于RE包

学了正则表达式就要用了,PYTHON中处理这些有用到re包里面的相关函数,比如match,sub,compile

def main():
    pattern=re.compile(r'(?<=\D)1[3456789]\d{9}(?=\D)|(\s)?1[3456789]\d{9}(\s)?')
    sentence='我的手机号是15892203313不是15892203323'
    mylist=pattern.findall(sentence)
    print(mylist)
    #iter-iterator-迭代器
    for temp in pattern.finditer(sentence):
        print(temp)
    #m=pattern.search(sentence)
    #while m:
     #   print(m.group())
      #  m=pattern.search(sentence,m.span()[1])

if __name__ == '__main__':
    main()

关于线程

线程是个很重要的东西,在PYTHON中以为多线程会在CPU同一核中进行所以被人说没啥用,但是我觉的蛮有用的,通过将程序分为多个线程明显提高了程序的运行速度,特别是我在做贪吃蛇的时候,用了多线程后蛇的延迟问题明显解除了,这里我放个关于多线程的例子

#5个线程往同一列表加内容(10000),统计列表中多少东西
import time
from threading import Thread

count = 0
class Output(Thread):
    def __init__(self,string,cont,mylist:list):
        super().__init__()
        self._string=string
        self._cont=cont
        self._mylist=mylist
    def run(self):

        while self._cont>0:
           self._mylist.append(self._string)
           self._cont-=1
#这里可以加锁让一个在装的时候其他线程等待
#当多个线程要访问一个资源时就可能导致竞争资源导致资源状态错误
#对被多个线程访问的资源我们称为临界资源,对这种资源我们要加上保护


# def output(string):
#
#     global count
#     incont = 0
#     while count < 100:
#         print(string, end='', flush=True)
#         count += 1
#         incont += 1
#
#         time.sleep(0.01)
#     print('\n%s打印了%d\n' % (string, incont))


def main():

    # 守护线程为不值得保留的线程-其他线程结束后自动结束
    # Thread(target=output, args=('ping',)).start()
    # Thread(target=output, args=('pong',)).start()
    mylist=[]
    Output('sfdsf',10000,mylist).start()
    Output('lalal', 10000, mylist).start()
    Output('aaaa', 10000, mylist).start()
    Output('qqqq', 10000, mylist).start()
    Output('qqqqq', 10000, mylist).start()
    print(mylist)
    print(len(mylist))


if __name__ == '__main__':
    main()

关于服务器

在网络编程这方面,构建服务器无疑是不可缺少的一部分,PYTHON 中关于构建服务器的工具都在SOCKET包中,在构建服务器时只要记得服务器的搭建顺序,调用相关函数,就可以搭建服务器

# 这个是个服务器
from socket import socket
from threading import Thread

def main():
    class ClientHandler(Thread):
     def __init__(self,clint):
        super().__init__()
        self._clint=clint

     def run(self):
        while True:
            try:
                data=self._clint.recv(1024)

                if data.decode('utf-8')=='byebye':
                    clints.remove(self._clint)
                    self._clint.close()
                    break
                else:
                    for clint in clints:

                        clint.send(data)
            except Exception as  ex_mg:
                print(ex_mg)
                clints.remove(self._clint)
                break

    server=socket()
    #命令行参数-sys.argv
    server.bind(('127.0.0.1',6789))
    server.listen(512)
    clints=[]
    while True:
        cur_clint,addr=server.accept()
        print(addr[0],'连接')
        clints.append(cur_clint)
        ClientHandler(cur_clint).start()
if __name__ == '__main__':
    main(
#这是个客户端
from socket import socket
from threading import Thread


def main():
    class Refresh(Thread):
        def __init__(self, client):
            super().__init__()
            self._client = client

        def run(self):
            while running:
                data = self._client.recv(1024)
                print(data.decode('utf-8'))

    nickname = input('请输入你的昵称:')
    myclient = socket()
    running = True

    myclient.connect(('127.0.0.1', 6789))
    Refresh(myclient).start()

    while running:

        content = input('请发言:')

        if content == 'byebye':
            myclient.send(content.encode('utf-8'))
            running = False
        else:
            msg = nickname + ':' + content

            myclient.send(msg.encode('utf-8'))


if __name__ == '__main__':
    main()

关于直接给邮箱发邮件

直接通过调用网络协议完成对多个邮箱发送邮件的方法,刚听到的时候瞬间想到了邮箱里成堆的垃圾邮件,没错,就是用这个协议发的

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from socket import  socket
from smtplib import SMTP
def  main():
    sender=SMTP('smtp.163.com')
    sender.login('lala@163.com','qq5288')
    message=MIMEMultipart()
    # content="""
    # 好多文本
    # """
    text_msg=MIMEText('在附件','plain','utf-8')
    message['subject']='查收附件数据'
    message.attach(text_msg)
    att2=MIMEText(open('test.xls','rb').read(),'base64','utf-8')
    att2['Content-Type']='application/vnd.ms-excl'
    att2['Content-Disposition']='attachment;filename=test.xls'
    message.attach(att2)
    sender.sendmail('lala@163.com','lala6@qq.com',message.as_string())
    # sender.sendmail('lala@163.com','lala@qq.com',message.as_string())
    print('发送成功')


if __name__ == '__main__':
    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值