自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

纸飞机的博客

努力是成功的资本

  • 博客(50)
  • 收藏
  • 关注

原创 爬虫——bs4解析

项目:Go Home By Phone项目描述:由于城市交通脉络太复杂,公交信息也较繁琐,所以设计该项目,主要是向用户呈现详细的公交信息。在该项目中,总过要涉及3个级别的网页信息。即:城市公交信息、字母或者数字开头的公交信息、每辆公交的详细站台信息。所以在这个项目中运用到了:设置请求头模拟用户、bs4解析网页信息、最终的文本信息保存。首先分析每一个网页信息,然后再模拟用户访问一级网页,拿到需要...

2019-10-08 11:22:52 333

原创 生产模式

设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计模式有很多种,比较流行的是:GOF(Goup Of Four)23 种设计模式。两个最常用的模式:工厂模式和单例模式。1. 工厂模式:工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进行统一的管理和控制。class Factory_food: def creat_food(self...

2019-03-15 20:30:47 323

原创 测试深浅拷贝、组合和继承

深浅拷贝:变量的赋值操作只是形成两个变量,实际还是指向同一个对象。浅拷贝Python 拷贝一般都是浅拷贝。拷贝时,对象包含的子对象内容不拷贝。因此,源对象和拷贝对象会引用同一个子对象。深拷贝使用 copy 模块的 deepcopy 函数,递归拷贝对象中包含的子对象。源对象和拷贝对象所有的子对象也不同。【示例】手机对象里有cpu和screen。将手机拷贝,测试里面的cpu和screen...

2019-03-15 12:56:47 264

原创 特殊方法和运算符重载

运算符重载Python的运算符实际上是通过调用对象的特殊方法实现的。a = 20b = 30c = a+bd = a.__add__(b)print("c=",c)print("d=",d)结果:c= 50d= 50方法说明例子__init__构造方法对象创建:p = Person()__del__析构方法对象回收__repr__...

2019-03-15 12:04:34 345

原创 __str__()方法、多继承、MRO、super、多态

1.重写__str__()方法:当不调用重写__str__()方法时,会打印出:  <main.A object at 0x0000024AD3187400>  这是因为调用该类时候,会默认执行__str__()方法,类似于c语言中的主方法main()。class A: #pass #会打印出<__main__.A object at 0x0000024AD318740...

2019-03-15 11:25:59 253

原创 面向对象三大特征介绍、重点继承

Python 是面向对象的语言,也支持面向对象编程的三大特性:继承、封装(隐藏)、多态。封装(隐藏)  隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将“细节封装起来”,只对外暴露“相关调用方法”。通过私有属性、私有方法”的方式,实现“封装”。继承  继承可以让子类具有父类的特性,提高了代码的重用性。从设计上是一种增量进化,原有父类设计不变的情况下,可以增加新的功能,或者改进已...

2019-03-13 19:49:52 199

原创 属性和方法命名总结

属性和方法命名总结· _xxx:保护成员,不能用“from module import * ”导入,只有类对象和子类对象能访问这些成员。· xxx:系统定义的特殊成员· __xxx: 类中的私有成员,只有类对象自己能访问,子类对象也不能访问。(但,在类外部可以通过“对象名. _类名__xxx”这种特殊方式访问。Python 不存在严格意义的私有成员)注:方法和属性都遵循上面的规则。类编...

2019-03-13 14:09:32 638

原创 @property 装饰器

@property 可以将一个方法的调用方式变成“属性调用”。class Employee: @property def salary(self): return 30000;emp1 = Employee()print(emp1.salary) #打印 30000print(type(emp1.salary)) #打印<class 'int'>...

2019-03-13 13:45:38 1697

原创 数据库、外键

一、数据库介绍以及发展历史数据库是用来存放数据的,但是数据不是直接存放在数据库中的。数据库中存放的是表,而在表中存放的才是数据。例如:下面的航班数据库,在该数据库中建立了三张表:旅客信息表、航班信息表、机票信息表。这三张表中存储的才是数据。数据库的发展史1.萌芽阶段(文件)所有的存储数据的文件都属于数据库.安全性低.2.层次模型  ①.优点:查询分类的数据效率比较高  ②.缺点...

2019-03-13 13:25:59 301

原创 使用mysql,建数据库建表操作

在windows启动mysql将mysql安装好之后,记得配置好环境。打开cmd,输入命令:mysql -u root -p,输入密码,回车出现下面界面即可:到了此时即可进行下面建数据库,访问到数据库下去建表。1. 创建数据库:创建已经存在的数据库会报错,注意避免关键字,否则需要加上反引号(``)。create database 数据库名 [charset = 字符集选项];Eg:...

2019-03-12 21:13:30 1310

原创 mysql字符选取优化

整型数据优化① 存储人的年龄应该使用哪种数据类型?使用tinyint类型(无符号型)② 存储乌龟的年龄应该使用哪种数据类型?使用smallinit类型(无符号型)③ 存储一个1500万数据的数据表其主键id应该选择哪种数据类型?使用mediumint(无符号型),大约在0-1600万左右字符串类型优化char(length)占用的空间为 固定的,与内容多少无关;varchar(l...

2019-03-12 20:33:05 149

原创 mysql的数据类型

字符集(charset)字符集:可见字符在保存和传输的时候对应的二进制代码集合。通常在以下两种情况用到:1.保存数据2.数据传输create table test( name varchar(10) charset utf8)charset=gbk;gbk,gb2312,utf8区别:  他们都是常用的字符编码方式,gbk和gb2312(自带)是简体中文的编码,而utf8是国际...

2019-03-12 20:25:47 273

原创 私有属性和私有方法(实现封装)

Python 对于类的成员没有严格的访问控制限制,这与其他面向对象语言有区别。关于私有属性和私有方法,有如下要点:通常我们约定,两个下划线开头的属性是私有的(private) 。其他为公共的(public)。类内部可以访问私有属性(方法)类外部不能直接访问私有属性(方法)类外部可以通过“_类名__私有属性(方法)名”访问私有属性(方法)【注】方法本质上也是属性!只不过是可以通过()执...

2019-03-11 21:38:08 667

原创 方法的重载和动态性

在Python中,方法没有重载在其他语言中,可以定义多个重名的方法,只要保证方法签名唯一即可。方法签名包含 3个部分:方法名、参数数量、参数类型。  而在Python 中,方法的参数没有声明类型,参数的数量也可以由可变参数控制。 因此,Python 中是没有方法的重载的。定义一个方法即可有多种调用方式,相当于实现了其他语言中的方法的重载。如果我们在类体中定义了 多个重名的方法,只有最后一个方...

2019-03-11 21:19:07 231

原创 内存分析实例对象和类对象创建过程、__del__、__call__方法

我们以下面代码为例,分析整个创建过程:class Student: school = "麻省理工" #类属性 count = 0 #类属性 def __init__(self,name,score): self.name = name #实例属性 self.score = score Student.count = Stud...

2019-03-11 20:59:04 205

原创 类对象、类属性、类方法(@classmethod)、静态方法(@staticmethod)

类对象我们在前面讲的类定义格式中,“class 类名:”,实际上,当解释器执行 class 语句时,就会创建一个类对象。【操作】 测试类对象的生成class Student: pass #空语句,只是作为一个占位符存在。 print(type(Student))print(id(Student))Stu2 = Students1 = Stu2()print(s1)执行结果...

2019-03-11 20:20:03 463

原创 类,对象,方法与函数的区别

面向对象(Object oriented Programming,OOP)编程 的思想主要是针对大型软件设计而来的。面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,使程序的扩展性更强、可读性更好,从而大大提高了编程的效率。    Python 完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装等。 ...

2019-03-11 19:37:30 16086

原创 nonlocal关键字、LEGB规则

nonlocal 关键字nonlocal和global这两个关键字很相似,区别在于他们声明函数的区域不同。  nonlocal 用来声明嵌套函数外层的局部变量。  global 用来声明全局变量。【操作】使用 nonlocal 声明外层局部变量a = 100def outer(): b = 10 def inner(): nonlocal b # 声...

2019-03-09 21:07:10 269

原创 递归函数、嵌套函数

递归函数递归函数指的是:自己调用自己的函数,在函数体内部直接或间接的自己调用自己。递归类似于数学的“数学归纳法”。 每个递归函数必须包含两个部分:1. 终止条件表示递归什么时候结束。一般用于返回值,不再调用自己。2. 递归步骤把第 n 步的值和第 n-1 步相关联。递归函数由于会创建大量的函数对象、过量的消耗内存和运算能力。在处理大量数据时,谨慎使用。【操作】 使用递归函数计算...

2019-03-09 20:28:52 1285

原创 lambda 表达式和匿名函数、eval函数

lambda 表达式可以用来声明匿名函数。  lambda 函数是一种简单的、在同一行中定义函数的方法。lambda 函数实际生成了一个函数对象。    lambda 表达式 只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是 函数的返回值。lambda 表达式的基本语法如下:      lambda arg1,arg2,arg3… : <表达式>函数参数: a...

2019-03-09 20:06:44 461

原创 位置参数、默认值参数、命名参数、可变参数、强制命名参数

位置参数函数调用时,实参默认按位置顺序传递,需要个数和形参匹配。按位置传递的参数,称为:“位置参数”。默认值参数我们可以为某些参数设置默认值,这样这些参数在传递时就是可选的。称为“默认值参数”。默认值参数放到位置参数后面。命名参数我们也可以按照形参的名称传递参数,称为“命名参数”,也称“关键字参数”。def fun1(a,b,c,d): print("{0} -- {1} -- {2...

2019-03-07 22:50:42 2520

原创 深拷贝、浅拷贝

使用内置函数:copy(浅拷贝)、deepcopy(深拷贝)。浅拷贝: 不拷贝子对象的内容,只是拷贝子对象的引用。深拷贝: 会连子对象的内存也全部拷贝一份,对子对象的修改不会影响源对象import copya = [1,2,3,4]b = ['a','b',a]c = b[:] #相当于 c = copy.copy(b)d = copy.deepcopy(b)print(b...

2019-03-07 18:17:15 152

原创 参数的传递

函数的参数传递本质上就是:从实参到形参的赋值操作。Python 中“一切皆对象”,所有的赋值操作都是 “引用的赋值”。所以,Python 中参数的传递都是“引用传递”,不是“值传递”。具体操作时分为两类:对“可变对象”进行“写操作”,直接作用于原对象本身。对“不可变对象”进行“写操作”,会产生一个新的“对象空间”,并用新的值填充这块空间。可变对象有:  字典、列表、集合、自定义的对...

2019-03-07 18:02:55 580

原创 全局变量和局部变量

变量的作用域变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影响。变量分为:全局变量、局部变量。全局变量:在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。全局变量一般做常量使用。函数内要改变全局变量的值,使用 global 声明一下局部变量:在函数体中(包含形式参数)...

2019-03-07 17:45:17 240

原创 函数(function)

函数是可重用的程序代码块。 函数的作用,不仅可以实现代码的复用,更能实现代码的一致性一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现。函数的基本概念一个程序由一个个任务组成;函数就是代表一个任务或者一个功能。函数是代码复用的通用机制。Python 函数的分类1. 内置函数  str()、list()、len()等这些都是内置函数,我们可以拿来直接使用。2. ...

2019-03-07 17:20:09 852

原创 函数底层

Python 中,“一切都是对象”。函数也是对象,实际上,执行 def 定义函数后,系统就创建了相应的函数对象。我们执行如下程序,然后进行解释:def print_star(n): print("*"*n)print(print_star)print(id(print_star))c = print_starc(5)执行结果:<function print_star at ...

2019-03-07 17:09:12 456

原创 turtle绘制同心圆、棋盘

绘制同心圆思路:  先在(0,0)处画半径为R = 15的圆,在去画半径增加r = 10的圆,  发现只要将圆心(0,0)更改为(0,10),半径更改为(R+r)import turtlet = turtle.Pen() #画笔t.width(5) #画笔加粗my_color = ('red','green','blue','pink','black') #给圆...

2019-03-07 11:01:10 1940

原创 推导式

推导式: 推导式是从一个或者多个迭代器快速创建序列的一种方法。它可以将循环和条件判断结合,从而避免冗长的代码。推导式是典型的 Python 风格,使用推导式创建序列,效率高,且简约优雅。列表推导式: 使用列表推导式生成列表对象,语法:        [表达式 for item in 可迭代对象]     或者:{表达式 for ...

2019-03-06 22:02:53 573

原创 break、count、else、代码优化

break 语句break 语句可用于 while 和 for 循环,用来结束整个循环。当有嵌套循环时,break 语句只能跳出最近一层的循环。【操作】使用 break 语句结束循环while True: a = input("请输入一个字符(输入 Q 或 q 结束)") if a.upper()=='Q': print("循环结束,退出") break...

2019-03-06 14:32:40 419

原创 可迭代对象与循环

Python 包含以下几种可迭代对象:序列。包含:字符串、列表、元组字典迭代器对象(iterator)生成器函数(generator)文件对象我们通过循环来遍历这几种类型的数据:【操作】 遍历字符串中的字符for x in "abc001": print(x)【操作】 遍历字典d = {'name':'alice','age':18,'address':'烟台'}fo...

2019-03-06 13:51:56 363

原创 循环结构

循环结构用来重复执行一条或多条语句。表达这样的逻辑:如果符合条件,则反复执行循环体里的语句。在每次执行完后都会判断一次条件是否为 True,如果为 True 则重复执行循环体里的语句。图示如下:循环体里面的语句至少应该包含改变条件表达式的语句,以使循环趋于结束;否则,就会变成一个死循环。while 循环while 循环的语法格式如下:  while 条件表达式:    循环体语...

2019-03-06 13:26:03 209

原创 Ubuntu下Linux故障

问题:  Ubuntu 启动已经安装好的虚拟机,VMware虚拟机启动后出现黑屏,不能显示界面,但是在查看->控制台视图下可以看到界面解决方法:  以管理员身份运行cmd控制台程序,输入命令:  netsh winsock reset  作用是重置winsock网络规范,然后重启系统。...

2019-03-06 12:47:18 302

原创 选择结构

选择结构通过判断条件是否成立,来决定执行哪个分支。选择结构有多种形式,分为:单分支、双分支、多分支。流程图如下:单分支结构双分支结构多分支结构单分支选择结构if 语句单分支结构的语法形式如下:if 条件表达式:  语句/语句块其中:1 .条件表达式:可以是逻辑表达式、关系表达式、算术表达式等等。2 .语句/语句块:可以是一条语句,也可以是多条语句。多条语句,缩进必须对...

2019-03-05 22:26:15 3734

原创 时间

简介:  计算机时间表示:从 1970年1月1日00:00:00 开始,以毫秒(1/1000秒)进行计算。  通常我们也将1970年这个时刻称为“unix时间点“。  Python中可以通过time.time()获得当前时刻,返回的值是以秒为单位,返回的值是以秒为单位,带微秒(1/1000 毫秒)精度的浮点值。例如:1530167364.8566。>>> import ...

2019-03-05 20:09:35 202

原创 数据类型、运算符

最基本内置数据类型和运算符每个对象都有类型,python 中最基本的内置数据类型:整型整数,2345,10,50浮点型小数,3.14 或者科学计数法 314e-2布尔型表示真假,仅包含:True、False字符串型由字符组成的序列。 “abc”,LiMing”,“教授”,”程序员”数字和基本运算符Python 支持整数(如:50,520)和浮点数(如:3.14,10.0,...

2019-03-05 19:57:58 323

原创 变量、赋值、常量

变量和简单赋值语句变量的声明和赋值  变量的声明和赋值用于将一个变量绑定到一个对象上,格式如下:变量名 = 表达式  最简单的表达式就是字面量。比如:a = 123 。 运行过程中,解释器先运行右边的表达式,生成一个代表表达式运算结果的对象;然后,将这个对象地址赋值给左边的变量。【操作】 变量在使用前必须先被初始化(先被赋值)>>> my_nameTraceback...

2019-03-05 19:42:20 588 1

原创 标识符

基本用法标识符: 用于变量、函数、类、模块等的名称。标识符有如下特定的规则:区分大小写。如:sxt 和 SXT 是不同的第一个字符必须是字母、下划线。其后的字符是:字母、数字、下划线不能使用关键字。比如:if、or、while 等。以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。比如:__init__是类的构造函数。【操作】 使用 Python 帮助系统查看关键字 ...

2019-03-05 19:35:13 293

原创 Linux命令

1. cd:切入某路径下返回上一级: cd …返回根目录:cd ~2. ls:查看该路径下的文件3. mkdir:创建目录mkdir filename:生成一个名字是filename的目录文件夹4. rm:删除目录删除文件:  rm -f 目标文件删除目录:  rm -ir: 需要缺每个文件是否要被删除,如果文件过多会非常繁琐  rm -rf: 会直接删除文件夹,不会给出警告...

2019-03-05 19:24:04 527

原创 对象 与 引用 之间的关系

对象Python 中,一切皆对象。 每个对象由:标识(identity)、类型(type)、value(值)组成。标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数 id(obj)可返回对象 obj 的标识。类型用于表示对象存储的“数据”的类型。类型可以限制对象的取值范围以及可执行的操作。可以使用 type(obj)获得对象的所属类型。值表示对象所存储的数据的信息。使...

2019-03-05 13:06:13 706

原创 编程基础

标题概念Python 程序的构成:Python 程序由模块组成。一个模块对应 python 源文件,一般后缀名是:.py。模块由语句组成。运行 Python 程序时,按照模块中语句的顺序依次执行。语句是 Python 程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。代码的组织和缩进很多编程语言通过字符(例如:花括号{})、关键字(例如:begain/end)来划分代...

2019-03-04 20:57:01 377

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除