Python面向对象

对象:一个自包含的实体,用一组可识别的特性和行为来标识 类:具有相同的属性和功能的对象的抽象的集合 实例:一个真实的对象,实例化就是创建对象的过程 多态:可对不同类型的对象执行相同的操作,而这些操作就像“被施了魔法”一样能够正常运行 封装:对外部隐藏有关对象工作原理的细节 继承:可基于通用类创建专用类 多态 多态可以让我们在不知道变量指向哪种对象时,也能够对其执行操作,且操作的行为将随对象所属的类型(类)而异。每当不知道对象是什么样就能对其执行操作,都是多态在起作用 多态以 继承 和 重写 父类方法 为前提 多态是调用方法的技巧,不会影响到类的内部设计 多态性即向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法) 听说Python天然就多态 12345678910111213141516171819202122232425class Person(object): def __init__(self,name,sex): self.name = name self.sex = sex def print_title(self): if self.sex == "male": print("man") elif self.sex == "female": print("woman")class Child(Person): # Child 继承 Person def print_title(self): if self.sex == "male": print("boy") elif self.sex == "female": print("girl")May = Child("May","female")Peter = Person("Peter","male")print(May.name,May.sex,Peter.name,Peter.sex)# 同一消息May.print_title()Peter.print_title()

Python

Jupyter Notebooks的简单了解

撸一手Jupyter

Python

Python多进程&&多线程(初步)

进程 && 线程 进程:进程是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、数据栈以及其他用于跟踪进程执行的辅助数据,操作系统管理所有进程的执行,为它们合理的分配资源。进程可以通过fork或者wpawn的方式来创建新的进程执行其他任务,不过新的进程有自己独立的内存空间和数据栈,所以必须通过进程间的通信机制(IPC,Inter Process Communication)来实现数据共享,具体的方式包括管道、信号、套接字、共享内存等。 线程:进程的一个执行单元。线程在同一个进程中执行,共享程序的上下文。一个进程中的各个线程与主线程共享同一片数据空间,因而相比与独立的进程,线程间的信息共享和通信更为容易。线程一般是以并发的方式执行的。注意在单核CPU系统中,真正的并发是不可能的,所以新城的执行实际上是这样规划的:每个线程执行一小会,然后让步给其他线程的任务(再次排队等候更多的CPU执行时间)。在整个线程的执行过程中,每个线程执行它自己的特定的任务,在必要时和其他进程进行结果通信。 Python多进程(使用multiprocessing) 1234567891011121314151617181920212223242526from time import time, sleepfrom random import randintfrom multiprocessing import Processdef my_task(name): sleep_time = randint(1,10) sleep(sleep_time) print("你叫了一声%s,它鸟你用了%d秒" % (name, sleep_time))def main(): start = time() process_1 = Process(target=my_task, args=["yeshan", ]) process_2 = Process(target=my_task, args=["foel", ]) # 启动进程 process_1.start() process_2.start() # 等待进程执行结束 process_1.join() process_2.join() end = time() print("一共花费了%f秒" % (end-start))if __name__ == '__main__': main()

Python

HTTPie的使用

HTTPie

Git Branch Practice

Git Branch Practice

Git

吐槽

better and better

我与vim的亲密接触(ˉ▽ ̄~)

emmm,闲来无事,打算了解下神奇vim(用来zhuangbi)。在终端操作很帅(ˉ▽ ̄~)~~! 什么是vim??Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 vi/vim的使用 vi/vim有三种模式: 命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。刚启动时就是这个模式。 输入模式:正常的文本录入。 末行模式:保存或退出文档,以及设置编辑环境。又可成为底线命令模式。

Linux

SQLAlchemy建立数据库模型之间的关系

常见关系: 一对多关系 多对一关系 多对多关系 一对一关系 一对多关系(一个作者,多篇文章) 123456789101112131415161718192021222324252627282930## 一对多关系,单作者-多文章,外键不可少## 外键(ForeignKey)总在多的那边定义,关系(relationship)总在单的那边定义class Author(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(70), unique=True) phone = db.Column(db.String(20)) # articles为关系属性(一个集合,可以像列表一样操作,在关系的出发侧定义 ## relationship()函数的第一个参数为关系另一侧的模型名称(Article) articles = db.relationship('Article')class Article(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(15), index=True) body = db.Column(db.Text) # 传入ForeignKey的参数形式为:"表名.字段名" ## 模型类对应的表名由Flask-SQLAlchemy生成,默认为类名称的小写形式,多个单词通过下划线分隔 author_id = db.Column(db.Integer, db.ForeignKey('author.id')) ## 外键字段(author_id)和关系属性(articles)的命名没有限制## 建立关系可通过操作关系属性进行>>>shansan = Author(name="shansan")>>>hello = Article(title="Hello world !")>>>boy = Article(title="Hello Boy !")>>>db.session.add(shansan) # 将创建的数据库记录添加到会话中>>>db.session.add(hello)>>>db.session.add(boy)>>>shansan.articles.append(hello) # 操作关系属性>>>shansan.articles.append(boy)>>>db.session.commit()

Flask

Flask的请求钩子与上下文简记

请求钩子(Hook) 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如:在请求开始时,建立数据库连接;在请求结束时,指定数据的交互格式。为了让>每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。通过请求钩子,我们可以对请求进行预处理(preprocessing)和后处理>(postprocessing)。 Flask的请求钩子通过装饰器实现,每个钩子可以注册任意多个处理函数,默认的五种请求钩子如下: 钩子 说明 before_first_request 注册一个函数,在处理请求前运行 before_request 注册一个函数,在处理每个请求前运行 after_request 注册一个函数,如果有未处理的一场抛出。会在每个请求结束后运行 teardown_request 注册一个函数,即使有未处理的异常抛出,会在每个请求介绍后执行。如果发生异常,会传入异常对象作为参数注册到函数中 after_this_request 在视图函数内注册一个函数,在这个请求结束后运行

Flask

将本地项目推送到GitHub远程仓库

如何将本地项目推送到Github Tip:在本地要安装好Git,官网:https://git-scm.com/ 一个学习Git的好地方:https://try.github.io/ 在线闯关实战,边练边学的好地方:https://learngitbranching.js.org/ 方法一:使用https推送 12345678910111213# 步骤# 1.创建一个目录mkdir Test# 2.将当前目录变为git管理仓库git init# 3.将文件添加到版本库,这里将目录下的所有文件都添加进去了git add .# 4.告诉git将文件提交到仓库git commit -m "first-commit"# 5.将当前仓库与远程仓库关联git remote add origin 远程仓库的https地址 # eg: git remote add https://github.com/ssmath/Test.git# 6.将仓库内master分支的所有内容推送到远程仓库,这里会使用到Github的账号密码git push -u origin master

Git
18910111217