关于python面向对象编程中、下列说法中_Python面向对象与模块化之KO面试官(四)...

d65c6e9881b4cfd3e9310ba9e2a27bc657829d61.png

OOP常见概念梳理

在一个软件设计与开发中,所有包名、类名、函数名、变量名都应该遵循一定的开发规范如无特殊情况, 文件一律使用 UTF-8 编码

代码避免采用空格缩进,统一使用Tab进行缩进

块级函数和类定义之间空二行,类成员与函数之间空一行

模块尽量使用小写命名,首字母保持小写,如果有多个单词采用下划线分割

类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头

函数名一律小写,如有多个单词,用下划线隔开

变量名尽量小写, 如有多个单词,用下划线隔开

自定义和调用函数时,可使用的正式参数类型有四种必需参数:必须以正确的顺序传入函数。调用时的数量必须和声明时的一样否则会报错

默认参数:调用函数时,如果没有传递参数,则会使用默认参数,默认参数间接实现Python多态性

不定长参数:加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数

关键字参数:使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值ba4a14c94cdb08d4a32dc816b9c82b7092c06c46.png

Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域

if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问

当内部作用域想修改外部作用域的变量时,就要用到global关键字了。7eecb3b7843fdf60615d0bb40d29de8cf4d36dcd.png

Py中装饰器语法复习一切皆为对象,函数也是一个对象,而函数名称就是对象名称

可以在函数中定义和返回另一个函数

使用 @ 符号引用已有的函数(比如 @classmethod)后,可用于修饰其他函数,装饰被修饰的函数

装饰器在日志、权限、函数执行时间等场景中使用比较多74323f09591de8fb21147be014428a2fc9b67d9e.png

模块是一个包含所有你定义的类、函数、变量的文件,py为后缀。模块可以被别的程序引入,以使用该模块中的对象一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行,第一次被执行时被导入模块会生成pyc格式的文件

Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中

每个模块都有一个__name__属性,当其值是’main’时,表明该模块自身在运行,否则是被引入

如果包定义文件 init.py 存在一个叫做 all 的列表变量,那么在使用 from package import * 的时候就把这个列表中的所有名字作为包内容导入

搜索路径是在Python编译或安装的时候确定的,安装新的库应该也会修改。搜索路径被存储在sys模块中的path变量68de57f6a8eede094c000d3a621c68021e80af8d.png

Python OOP相关概念两个下划线开头,声明该属性或者方法为私有,不能在类的外部被使用或直接访问

init : 构造函数,在生成对象时调用,del : 析构函数,释放对象时使用

多态性分为重写与重载,子类可以重写父类声明的方法而方法中可变参数与关键字参数是Py多态性表现形式f3ff38511a0ecc31b6072775d32fbb0dd3fe1c3e.png

Py面向对象浅谈面向对象是相对于面向过程而言的

面向过程语言是一种基于功能分析的、以算法为中心的程序设计方法;而面向对象是一种基于结构分析的、以数据为中心的程序设计思想

在面向对象语言中有一个有很重要东西,叫做类,类是所有对象的模板

面向对象程序设计的一个关键性观念是将数据和数据的操作封装在一起,组成一个相互依存,不可分割的整体

Http请求中get与post的区别最直接的区别,GET请求的参数是放在URL里的,POST请求参数是放在请求body里的

GET请求的URL传参有长度限制,而POST请求没有长度限制

GET请求的参数只能是ASCII码,所以中文需要URL编码,Post请求没有此限制,因此可以传输多媒体数据

Get比Post要更加省资源

Py中函数与方法的区别方法一般指与特定实例绑定的函数,通过对象调用方法时,对象本身将会被作为第一个参数传入 (系统自带)

普通函数没有self概念,普通的函数定义在模块中,而方法定义在类中

方法通常操作自身对象的属性(例如对当前属性列表进行排序),而函数在进行操作时通常指明排序对象 (例如系统内置函数sorted函数)

因为方式是定义在类中,因此方法定义肯定有缩进。而函数定义在模块中,因此它在定义时并不会缩进

你需要了解的self关键字self在对象的方法中表示当前对象本身,如果通过对象调用一个方法,那么该对象会自动传入到当前方法 的第一个参数中

self并不是关键字,只是一个用于接受对象的普通参数,理论上可以用任何一个普通变量名代替

方法中有self形参的方法成为非绑定类的方法,可以通过对象访问, 没有self的是绑定类的方法, 只能通过类访问

使用类访问绑定类的方法时, 如果类方法中需要访问当前类的成员,可以通过 class成员名来访问7aa2c6f5958d69bfdb4b363aa21e2407820f7fba.png

OOP经典选择题

各位童鞋,为了方便大家学习,括号中的答案字体颜色设置成了白色,用鼠标选中括号即可显示答案 o( ̄︶ ̄)o

Python如何定义一个函数 ( C )

A. class ( arg1, arg2,… argN)

B. function (arg1,arg2,…argN)

C. def (arg1,arg2,…argN)

D. def (type arg1,type arg2,…type argN)

关于函数的下列说法不正确的是 ( D )

A. 函数可以没有参数

B. 函数可以没有return语句

C. 函数由系统函数和自定义函数

D. 函数必须要有返回值

关于Python的Lambda函数,以下选项中描述错误的是 ( B )

A. Lambda函数将函数名作为函数结果返回

B. f = Lambda x,y:x+y 执行后,f的类型为数字类型

C. Lambda用于定义简单的、能够在一行内表示的函数

D. 可以使用Lambda函数定义列表的排序原则

以下选项中说法不正确的是 ( D )

A. 解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程

B. 编译是将源代码转换成目标代码的过程

C. C语言是静态语言,Python语言是脚本语言

D. 静态语言采用解释方式执行,脚本语言采用编译方式执行

以下选项中,不是 Python 语言保留字的是 ( A )

A. do

B. pass

C. except

D. while7aa2c6f5958d69bfdb4b363aa21e2407820f7fba.png

以下选项中,不属于函数的作用的是 ( A )

A. 提高代码执行速度

B. 降低编程复杂度

C. 增强代码可读性

D. 复用代码

在Python中,关于全局变量和局部变量,以下选项中描述不正确的是 ( B )

A. 一个程序中的变量包含两类:全局变量和局部变量

B. 全局变量不能和局部变量重名

C. 全局变量一般没有缩进

D. 全局变量在程序执行的全过程有效

关于函数的参数,以下选项中描述错误的是 ( A )

A. 可选参数可以定义在非可选参数的前面

B. 一个元组可以传递给带有星号的可变参数

C. 在定义函数时,可以设计可变数量参数,通过在参数前增加星号(*)实现

D. 在定义函数时,如果有些参数存在默认值,可以在定义函数时直接为这些参数指定默认值

以下内容关于函数描述正确的是 ( C )

A. 函数用于创建对象

B. 函数可以让重新执行的更快

C. 函数是一段代码用于执行特定的任务

D. 以上说法都是正确的

关于 Python 程序格式框架的描述,以下选项中错误的是 ( A )

A. Python 语言不采用严格的“缩进”来表明程序的格式框架

B. Python 单层缩进代码属于之前最邻近的一行非缩进代码,多层缩进代码根据缩进关系决定所属范围

C. Python 语言的缩进可以采用 Tab 键实现

D. 判断、循环、函数等语法形式能够通过缩进包含一批 Python 代码,进而表达对应的语义

OOP简答题

Python 内建数据类型有哪些整型 int

布尔型 bool

字符串 str

列表 list

元组 tuple

字典 dict

Python中 help()和 dir()函数的用途是什么dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表

带参数时,返回参数的属性、方法列表

help()函数用于显示文档字符串,还可以帮助您查看与模块,关键字,属性等相关的帮助

Python 中 is、==、isinstance()的区别is 判断的是 a 对象是否就是 b 对象,是通过 id 来判断的

==判断的是 a 对象的值是否和 b 对象的值相等,是通过 value 来判断的

还可以使用内置函数isinstance()来测试一个对象是否属于某个类的实例6410955b8c7e281c5296e52667a43f4bbb02fa83.png

简单列举说明私有成员、保护成员、特殊成员的特性_xxx 一个下划线开头,保护成员,只有该类的对象和子对象可以访问这些成员

__xxx__ 系统定义的特殊成员 (特殊属性 + 特殊方法)

xxx 私有成员,一般只有类对象自己能访问,子类对象也不能访问该成员,但是外部对象可以通过 "对象名_类名__xxx"这样特殊方式来访问

Python 中的模块和包是什么在Python中,模块是搭建程序的一种方式。每一个Python代码文件都是一个模块,并可以引用其他的模块中定义的函数、类信息

一个包含许多Python代码的文件夹是一个包。一个包可以包含模块和子包,所有的Py包都有__init__py 文件

介绍一下Py中 except 的用法和作用try…except…except…else…finally…

执行 try 下的语句,如果引发异常,则执行过程会跳到 except 语句

try 下的语句正常执行,则执行 else 块代码。如果发生异常,就不会执行

如果存在 finally 语句,最后总是会执行cb741a461f86bd16eac9d607609712f4b0ed6e12.png

Python中重载的实现机制

一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数可变参数类型

可变参数个数

Python里面如何生成随机数?随机整数:random.randint(a,b) 返回随机整数x,a<=x<=b

随机实数:random.random( ) 返回0到1之间的浮点数

random.uniform(a,b):返回指定范围内的浮点数dab91e62f10713fd927b689d8ebf8b4750376a3d.png

Python中重载的实现机制

一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数可变参数类型

可变参数个数

Python里面如何生成随机数?随机整数:random.randint(a,b) 返回随机整数x,a<=x<=b

随机实数:random.random( ) 返回0到1之间的浮点数

random.uniform(a,b):返回指定范围内的浮点数0bcc1636c1889eb478377568c37fe6c965a26af2.png

Python的参数传递是值传递还是引用传递

不可变参数用值传递像整数和字符串这样的不可变对象,是通过拷贝进行传递的,因为你无论如何都不可能在原处改变不可变对象,可变参数是用引用传递的8b7223bc208d54b6aa00fe9a1d59774913fe5887.png

f67e1c83d9372649e35f0f524d5b284193978007.png

00e2d095d1d9e708022d1828fc04aac49104a995.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值