最新要闻
- 脑筋急转弯什么人不怕冷?脑筋急转弯什么狗不会叫的5种答案是什么?
- 经常请吃饭的漂亮姐姐插曲有哪些?经常请吃饭的漂亮姐姐剧情介绍
- x战警范冰冰扮演的是什么角色?x战警范冰冰是哪一部
- 铝合金铸造工艺有哪些?铝合金铸造工艺流程
- 苦主是什么意思?苦主引申含义是什么?
- 【环球热闻】基于汉兰达开发而来 雷克萨斯TX效果图曝光:竟与奇瑞星途“撞衫”
- 微软正式放弃Win10 21H1!将无法收到任何安全更新或补丁
- 亚米级的高精度定位 高德北斗卫星日定位量已超2100亿次
- 不枉马粉苦等一场 全新马自达CX-90预告:六缸、后驱全都有
- 【全球快播报】对标迈巴赫S级!蔚来百万级豪车计划落地 售价百万
- 【当前独家】告别LCD/mini LED iPad Pro全系升级到OLED屏
- 全球快资讯:高端成了!小米12S Ultra被中国移动评为4000元以上最强旗舰
- 视点!果粉霸气!花万元同时入手小米13和13 Pro:之前用的是iPhone 14 Pro Max
- 火箭平民化!中国民营火箭朱雀二号即将首飞:人类首次挑战甲烷燃料
- 小米13系列刷新认知 卢伟冰6字评价:彻底脱胎换骨
- 快讯:3999元起!小米13今日开售:手感、续航碾压iPhone 14 Pro
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
天天速讯:Python3 编程面试题
- Python global 语句的作用
- lambda 匿名函数好处
- Python 错误处理
- Python 内置错误类型
- 简述 any() 和 all() 方法
- Python 中什么元素为假?
- 提高 Python 运行效率的方法
- Python 单例模式
- 为什么 Python 不提供函数重载
- 实例方法/静态方法/类方法
- __new__和 __init __方法的区别
- Python 的函数参数传递
- Python 实现对函参做类型检查
- 为什么说 Python 是动态语言
- Python 装饰器理解
- map 与 reduce 函数用法解释
- Python 深拷贝、浅拷贝区别
- Python 继承多态理解
- Python 面向对象的原则
- 参考资料
Python global 语句的作用
在编写程序的时候,如果想要改变(重新赋值)函数外部的变量,并且这个变量会作用于许多函数中,就需要告诉 Python 程序这个变量的作用域是全局变量,global
语句可以实现定义全局变量的作用。
lambda 匿名函数好处
精简代码,lambda
省去了定义函数,map
省去了写 for
循环过程:
str_1 = ["中国", "美国", "法国", "", "", "英国"]res = list(map(lambda x: "填充值" if x=="" else x, str_1))print(res) # ["中国", "美国", "法国", "填充值", "填充值", "英国"]
Python 错误处理
和其他高级语言一样,Python
也内置了一套try...except...finally...
的错误处理机制。
(资料图片仅供参考)
当我们认为某些代码可能会出错时,就可以用 try
来运行这段代码,如果执行出错,则后续代码不会继续执行,而是直接跳转至跳转至错误处理代码,即 except
语句块,执行完 except
后,如果有 finally
语句块,则执行。至此,执行完毕。跳转至错误处理代码,
Python 内置错误类型
IOError
:输入输出异常AttributeError
:试图访问一个对象没有的属性ImportError
:无法引入模块或包,基本是路径问题IndentationError
:语法错误,代码没有正确的对齐IndexError
:下标索引超出序列边界KeyError
: 试图访问你字典里不存在的键SyntaxError
: Python 代码逻辑语法出错,不能执行NameError
: 使用一个还未赋予对象的变量
简述 any() 和 all() 方法
any()
: 只要迭代器中有一个元素为真就为真;all()
: 迭代器中所有的判断项返回都是真,结果才为真.
Python 中什么元素为假?
答案:(0,空字符串,空列表、空字典、空元组、None, False)
提高 Python 运行效率的方法
- 使用生成器,因为可以节约大量内存;
- 循环代码优化,避免过多重复代码的执行;
- 核心模块用
Cython PyPy
等,提高效率; - 多进程、多线程、协程;
- 多个
if elif
条件判断,可以把最有可能先发生的条件放到前面写,这样可以减少程序判断的次数,提高效率。
Python 单例模式
为什么 Python 不提供函数重载
参考知乎为什么 Python 不支持函数重载?其他函数大部分都支持的?
我们知道 函数重载
主要是为了解决两个问题。
- 可变参数类型。
- 可变参数个数。
另外,一个函数重载基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。
- 对于情况 1 ,函数功能相同,但是参数类型不同,Python 如何处理?答案是根本不需要处理,因为
Python
可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 Python 中很可能是相同的代码,没有必要做成两个不同函数。 - 对于情况 2 ,函数功能相同,但参数个数不同,Python 如何处理?大家知道,答案就是缺省参数(默认参数)。对那些缺少的参数设定为缺省参数(默认参数)即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。所以,鉴于情况 1 跟 情况 2 都有了解决方案,Python 自然就不需要函数重载了。
实例方法/静态方法/类方法
Python
类语法中有三种方法,实例方法,静态方法,类方法,它们的区别如下:
- 实例方法只能被实例对象调用,静态方法(由
@staticmethod
装饰器来声明)、类方法(由@classmethod
装饰器来声明),可以被类或类的实例对象调用; 实例方法
,第一个参数必须要默认传实例对象,一般习惯用self。静态方法
,参数没有要求。类方法
,第一个参数必须要默认传类,一般习惯用cls
.
实例代码如下:
class Foo(object): """类三种方法语法形式 """ def instance_method(self): print("是类{}的实例方法,只能被实例对象调用".format(Foo)) @staticmethod def static_method(): print("是静态方法") @classmethod def class_method(cls): print("是类方法")foo = Foo()foo.instance_method()foo.static_method()foo.class_method()print("##############")Foo.static_method()Foo.class_method()
程序执行后输出如下:
是类
main.Foo"> 的实例方法,只能被实例对象调用是静态方法是类方法##############是静态方法是类方法
__new__和 __init __方法的区别
__init__
方法并不是真正意义上的构造函数,__new__
方法才是(类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行);__new__
方法用于创建对象并返回对象,当返回对象时会自动调用__init__
方法进行初始化,__new__
方法比__init__
方法更早执行;__new__
方法是静态方法,而__init__
是实例方法。
Python 的函数参数传递
参考这两个链接,stackoverflow的最高赞那个讲得很详细How do I pass a variable by reference?Python 面试题
个人总结(有点不好):
- 将可变对象:列表list、字典dict、NumPy数组ndarray和用户定义的类型(类),作为参数传递给函数,函数内部将其改变后,函数外部这个变量也会改变(对变量进行重新赋值除外
rebind the reference in the method
) - 将不可变对象:字符串string、元组tuple、数值numbers,作为参数传递给函数,函数内部将其改变后,函数外部这个变量不会改变
Python 实现对函参做类型检查
Python
自带的函数一般都会有对函数参数类型做检查,自定义的函数参数类型检查可以用函数 isinstance()
实现,例如:
def my_abs(x): """ 自定义的绝对值函数 :param x: int or float :return: positive number, int or float """ if not isinstance(x, (int, float)): raise TypeError("bad operand type") if x > 0: return x else: return -x
添加了参数检查后,如果传入错误的参数类型,函数就可以抛出一个 TypeError
错误。
为什么说 Python 是动态语言
在 Python
中,等号 =
是赋值语句,可以把任意数据类型
赋值给变量,同样一个变量可以反复赋值,而且可以是不同类型的变量,例如:
a = 100 # a是int型变量print(a)a = "ABC" # a 是str型变量print(a)
Pyhon 这种变量本身类型不固定,可以反复赋值不同类型的变量称为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错,Java/C++ 都是静态语言(int a; a = 100
)
Python 装饰器理解
装饰器本质上是一个 Python 函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景,装饰器是解决这类问题的绝佳设计。有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码到装饰器中并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
map 与 reduce 函数用法解释
1、map()
函数接收两个参数,一个是函数,一个是 Iterable,map 将传入的函数依次作用到序列的每个元素,并将结果作为新的 Iterator 返回,简单示例代码如下:
# 示例1def square(x): return x ** 2r = map(square, [1, 2, 3, 4, 5, 6, 7])squareed_list = list(r)print(squareed_list) # [1, 4, 9, 16, 25, 36, 49]# 使用lambda匿名函数简化为一行代码list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))# 示例2list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) # ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
注意map函数返回的是一个Iterator(惰性序列),要通过list函数转化为常用列表结构。map()作为高阶函数,事实上它是把运算规则抽象了。
2、reduce()
函数也接受两个参数,一个是函数(两个参数),一个是序列,与 map
不同的是reduce 把结果继续和序列的下一个元素做累积计算,效果如下:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
示例代码如下:
from functools import reduceCHAR_TO_INT = { "0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9}def str2int(str): ints = map(lambda x:CHAR_TO_INT[x], str) # str对象是Iterable对象 return reduce(lambda x,y:10*x + y, ints)print(str2int("0"))print(str2int("12300"))print(str2int("0012345")) # 0012345
Python 深拷贝、浅拷贝区别
Python 中的大多数对象,比如列表
list
、字典dict
、集合set
、numpy
数组,和用户定义的类型(类),都是可变的。意味着这些对象或包含的值可以被修改。但也有些对象是不可变的,例如数值型int
、字符串型str
和元组tuple
。
1、复制不可变数据类型:
复制不可变数据类型,不管 copy
还是 deepcopy
, 都是同一个地址。当浅复制的值是不可变对象(数值,字符串,元组)时和=“赋值”的情况一样,对象的 id
值与浅复制原来的值相同。
2、复制可变数据类型:
- 直接赋值:其实就是对象的引用(别名)。
- 浅拷贝(
copy
):拷贝父对象,不会拷贝对象内部的子对象(拷贝可以理解为创建内存)。产生浅拷贝的操作有以下几种:- 使用切片
[:]
操作 - 使用工厂函数(如
list/dir/set
), 工厂函数看上去像函数,实质上是类,调用时实际上是生成了该类型的一个实例,就像工厂生产货物一样. - 使用
copy
模块中的copy()
函数,b = a.copy()
,a
和b
是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
- 使用切片
- 深拷贝(
deepcopy
): copy 模块的deepcopy()
方法,完全拷贝了父对象及其子对象,两者是完全独立的。深拷贝,包含对象里面的子对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变。
注意:浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象(容器)就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型(没有子对象),没有拷贝一说,产生的都是原对象的引用。更清晰易懂的理解,可以参考这篇文章。
看一个示例程序,就能明白浅拷贝与深拷贝的区别了:
#!/usr/bin/Python3# -*-coding:utf-8 -*-import copya = [1, 2, 3, ["a", "b", "c"]]b = a # 赋值,传对象的引用c = copy.copy(a) # 浅拷贝d = copy.deepcopy(a) # 深拷贝a.append(4)a[3].append("d")print(id(a), id(b), id(c), id(d)) # a 与 b 的内存地址相同print("a = ", a)print("b = ", b)print("c = ", c)print("d = ", d) # [1, 2, 3, ["a", "b", "c"]]
程序输出如下:
2061915781832 2061915781832 2061932431304 2061932811400
a = [1, 2, 3, ["a", "b", "c", "d"], 4]b = [1, 2, 3, ["a", "b", "c", "d"], 4]c = [1, 2, 3, ["a", "b", "c", "d"]]d = [1, 2, 3, ["a", "b", "c"]]
Python 继承多态理解
- 多态是指对不同类型的变量进行相同的操作,它会根据对象(或类)类型的不同而表现出不同的行为。
- 继承可以拿到父类的所有数据和方法,子类可以重写父类的方法,也可以新增自己特有的方法。
- 先有继承,后有多态,不同类的对象对同一消息会作出不同的相应。
Python 面向对象的原则
- Python 工匠:写好面向对象代码的原则(上)
- Python 工匠:写好面向对象代码的原则(中)
- Python 工匠:写好面向对象代码的原则(下)
参考资料
- 参考这里
- 110道Python面试题(真题)
- 关于Python的面试题
- 继承和多态
- Python 直接赋值、浅拷贝和深度拷贝解析
天天速讯:Python3 编程面试题
焦点讯息:快递代拿项目 (第十组)终稿
焦点速看:面试题:浏览器输入 URL 后回车发生了什么?
破坏系统是为了更稳定?混沌工程在去哪儿的 4 个阶段实践
世界观点:产品分享:Qt鸿图电子智慧白板(适合会议机、电子黑板、电子笔记、电子阅读器等场景),当前版本v1.0.0
win7游戏不能全屏怎么解决?win7游戏不能全屏解决方法有哪些?
酷狗可以下载歌词吗?酷狗怎么下载歌词?
itunes怎么制作铃声?itunes备份文件在哪里?
chrome是什么浏览器?chrome文件夹可以删除吗?
在Excel中如何排序?excel中身份证号码怎么全部显示?
天天快看:Visual Studio下创建MFC项目,并结合OpenGL实现一个小程序
环球新动态:Go适合做什么?为何这么多人偏爱Go语言?
快消息!【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
北桥温度高的原因有哪些?北桥温度高有什么影响?
手机通话清单怎么查询?手机通话清单怎么清除?
支付宝沾沾卡怎么获得?支付宝沾沾卡怎么使用?
华为路由a1是千兆吗?华为路由a1怎么重新设置?
微信故障是什么原因?微信故障怎么修复?
脑筋急转弯什么人不怕冷?脑筋急转弯什么狗不会叫的5种答案是什么?
经常请吃饭的漂亮姐姐插曲有哪些?经常请吃饭的漂亮姐姐剧情介绍
x战警范冰冰扮演的是什么角色?x战警范冰冰是哪一部
前端跨域
MySQL 行溢出
springboot+vue 若依项目在windows2008R2企业版部署流程
环球视点!SpringCloud-Nacos学习笔记
铝合金铸造工艺有哪些?铝合金铸造工艺流程
苦主是什么意思?苦主引申含义是什么?
世界微速讯:上网认证(锐捷睿易篇)
当前快看:JNPF3.4.5消息模块:多渠道应用,配置灵活多样,满足更多使用场景
【环球热闻】基于汉兰达开发而来 雷克萨斯TX效果图曝光:竟与奇瑞星途“撞衫”
微软正式放弃Win10 21H1!将无法收到任何安全更新或补丁
亚米级的高精度定位 高德北斗卫星日定位量已超2100亿次
不枉马粉苦等一场 全新马自达CX-90预告:六缸、后驱全都有
【全球快播报】对标迈巴赫S级!蔚来百万级豪车计划落地 售价百万
SAP根据源码导入/ui2/cl_json类
Docker 安装,常用命令
【当前独家】告别LCD/mini LED iPad Pro全系升级到OLED屏
全球快资讯:高端成了!小米12S Ultra被中国移动评为4000元以上最强旗舰
视点!果粉霸气!花万元同时入手小米13和13 Pro:之前用的是iPhone 14 Pro Max
火箭平民化!中国民营火箭朱雀二号即将首飞:人类首次挑战甲烷燃料
小米13系列刷新认知 卢伟冰6字评价:彻底脱胎换骨
快讯:3999元起!小米13今日开售:手感、续航碾压iPhone 14 Pro
消息称苹果要对iOS开放 iPhone等自由了:功能、应用商店向第三方放开
苹果推送iOS 16.2正式版:新增无边记、Apple Music唱歌
阿根廷3-0克罗地亚晋级决赛!梅西创纪录之夜:成现役世界杯射手王
后退N帧协议(GBR)
环球新资讯:taro 编译报:模块引入顺序不一致报错
环球微动态丨主持人邀请世界首富马斯克登台后 现场嘘声一片:尴尬到家
前沿资讯!科幻美剧《西部世界》凉凉!将被彻底下线:美国都不能播了
播报:美国宣布首次实现“核聚变点火”!终于不再“赔本”了
短讯!RX 7900 XT/XTX首发开卖几分钟告罄!黄牛炒疯了:两倍溢价
每日观点:阿根廷时隔四年再战克罗地亚!半决赛现场将播放陈奕迅《孤勇者》
焦点讯息:前端入门教程:CSS标准盒模型和怪异盒模型区别
世界新资讯:卡梅隆力荐!《阿凡达:水之道》CINITY版明日点映:我国自主研发
啥?青岛海边能捡到帝王蟹引围观 网友称赚大 专家解答:不是帝王蟹
世界短讯!神舟十四号航天员摄影作品展:16个地方你认识多少?
《三体》动画爆火 “三体宇宙”能成中国版“漫威宇宙”吗?
每日短讯:Django框架:3、Django请求生命周期(重要)
环球微头条丨全年零事故率!换换智能换电解决电动车最大安全隐患
暴雪与新代理展开洽谈 魔兽等国服谁接?网易偷笑 新版号这难题无解
当前热文:一加11R参数曝光:6.7寸120Hz屏、搭载红外传感器
1*5 句话月考游寄
快资讯:女子下班回家发现2千万豪宅“塌了”:科普何为毛细管网
国际乒联服务器出问题 马龙、樊振东等信息遭泄漏
《暗黑破坏神4》IGN前瞻来了!堪称《暗黑2》超级强化版
环球新动态:被马斯克预言“倒闭” Lucid开始在华招人:明年国内销售
观速讯丨canvas处理切图并旋转图片
天天播报:MIUI 14上手:系统瘦身 更流畅了
天天快讯:不靠CG!诺兰新片《奥本海默》实拍还原第一颗原子弹爆炸场面
【时快讯】花几百亿“烧一壶开水” 美国是不是有“大病”?
国外发现马航MH370起落架残骸:或成蓄意坠毁关键证据
https代理服务器(一)问题引出
观点:路由分发 路由别名的名称空间 虚拟环境 HTTPresponse JsonResponse request对象获取文件 CBV源码剖析 模板语法传值特性
世界要闻:做7秒动画赢13W大奖?总奖池超80W、国内最火爆的3D渲染动画创作大赛开始报名!
全球今热点:iPhone 15拍照值得期待!苹果CEO库克拜访索尼传感器工厂
当前快看:iPad 10耐用性测试:惨遭一掰两半!质量堪忧
中国卫星拍的第一批太阳照片公布!你看懂了吗?
今日讯!MIUI 14脱胎换骨 张宇:梦回MIUI 9快如闪电的感觉
甄子丹主演 新大片《天龙八部之乔峰传》定档:宣传中国武侠
热资讯!字符串相关类
微动态丨Python工具箱系列(二十)
portainer安装,配置,使用
世界速递!Fiddler拦截请求、修改refer数据
全球报道:厘清企业数据治理难题,《网易数据治理白皮书》重磅发布!
天天报道:全球第一次:万兆家用宽带成了!上传、下载都是几千兆
北京小客车指标会过期?官方:谣言、不用着急买车
观焦点:口碑很差?《三体》动画豆瓣开分:几万人给五星 你看没
天天看热讯:红魔27英寸电竞显示器2K版来了:240Hz高刷卖2499元
今日播报!雷军希望的超越苹果做到了!近8成网友认为小米13比iPhone 14 Pro好看
基于zookeeper的kafka中间件
全球快讯:redis缓存穿透、缓存雪崩、缓存击穿【项目总结】
今日热议:零基础开启元宇宙|抖音快手虚拟形象直播【源码】
全球最资讯丨概率论之重要的随机变量
Zabbix技术分享——zabbix命令详解
索尼被曝测试新版PS5:性能不变、增设可拆卸光驱
全球热消息:因担心投资者被吸引到他国:欧盟再次推迟将锂列为有害物质
世界今亮点!苹果担心的事儿发生了 男子用AirTag追踪妻子被逮捕
《巫师3》次时代版体积惊人:PS5升级包超50GB
【世界播资讯】国家邮政局官方回应“快递不快”:加快恢复 邮政顺丰京东开启夜派
环球简讯:eval和ast.literal_eval区别