开发者社区> 余二五> 正文

Python基础技术问题总结

简介:
+关注继续查看

Introduction

此篇文章总结python一些常见的技术问题,每一个都是简短的解释,篇幅不大,不断更新中…


解释一下python的 and-or 语法

python的and-or常常被用来实现类C语言中的三元运算符:?, 更骚包的写法是 xxx and xxx or xxx and xxx or xxx,连接多个表达式,一行就够了。


if a > 10:
   return "big"
elif a > 5:
   return "middle"
else:
   return "small"

a > 5 and "big" or a > 3 and "middle" or "small"


但是要注意and-or并不完全等价于三元运算符,因为 a and b or c ,如果b是个假值,那么将返回c。

不过有技巧能够实现:


def choose(bool, a, b):
   return (bool and [a] or [b])[0]


Python里面如何拷贝一个对象?

这个问题在 python cookbook中有很好的解释。

标准库中的copy模块提供了两个方法来实现拷贝.一个方法是copy,它返回和参数包含内容一样的对象.


import copy
new_list = copy.copy(existing_list)


有些时候,你希望对象中的属性也被复制,可以使用deepcopy方法:


import copy
new_list_of_dicts = copy.deepcopy(existing_list_of_dicts)


copy(x)
Shallow copy operation on arbitrary Python objects.

deepcopy(x, memo=None, _nil=[])
Deep copy operation on arbitrary Python objects.


python中如何判断对象相等

也有一个类似的问题会被面试官问爆,我们不能将这个问题弄混了。

首先是C#中字符串的==和equal方法。

“==” :

对于内置值类型而言, == 判断两个内存值是否相等。

对于用户自定义的值类型而言(Struct), == 需要重载,否则不能使用。

对于引用类型而言,默认是同一引用才返回true,但是系统重载了很多引用类型的 == (比如下文提到的string),所以c#中引用类型的比较并不建议使用 ==。

“equals” :

对于值类型而言, 内存相等才返回true。

对于引用类型而言,指向同一个引用才算相等。

但是比较特殊的是字符串String,是一个特殊的引用型类型,在C#语言中,重载了string的equals()方法,使string对象用起来就像是值类型一样。

python中的 ==

python中的对象包含三要素:id, type, value

id 用来标识唯一一个对象,type标识对象的类型,value用来设置对象的值。

is 判断是否是一个对象,使用id来判断的。

== 是判断a对象的值是否是b对象的值,默认调用它的__eq__方法。


什么是lambda函数?它有什么好处?

早期自认为看了许多东西,总想把lambda表达式和lambda演算之间的关系研究明白,但是后来发现,文献中除了说lambda这个名字的由来是借鉴了lambda演算之外,再没有谈及其它。

那么lambda表达式有什么好处?匿名函数,一般用来给filter,map这样的函数式编程服务,map(lambda x: x*2,[1,2,3,4,5])

或者就是一次性产品。类似于这种即用即扔的产品:(lambda x: x*2)(3)

或者作为回调函数,传递给某些应用,比如消息处理。


请写出一段Python代码实现删除一个list里面的重复元素

可能有人用循环对比删除的办法去实现,不过有一个更优雅的办法,list(set(li))。


命名技巧

今天阅读代码,发现一个不错的函数命名方式:


def request(_argv):


就是把所有的参数前面都加上_下划线,这样你在函数体中,一眼就可以看出那些是局部变量,那些是作为参数传入的,类似把全局变量前面加上g。










本文转自 小强测试帮 51CTO博客,原文链接:http://blog.51cto.com/xqtesting/1641727,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
躬身入局,干货分享,2023年春招后端技术岗(Python)面试实战教程,Offer今始为君发
早春二月,研发倍忙,杂花生树,群鸥竟飞。为什么?因为春季招聘,无论是应届生,还是职场老鸟,都在摩拳擦掌,秣马厉兵,准备在面试场上一较身手,既分高下,也决Offer,本次我们打响春招第一炮,躬身入局,让2023年的第一个Offer来的比以往快那么一点点。
27 0
虚言妙诀终虚见,面试躬行是致知,Python技术面试策略与技巧实战记录
2023年,对于正在找工作的朋友来说,今年的就业季显得更加具有挑战性,更有意思的是,每当这个时候,各种面试经验分享就如同过江之鲫一般,俯拾皆是,因为例子过多,兹不细举。然而这些面试经验大部分都停留在理论阶段,这就造成了一个问题:理论和实际,到底有多大出入?我国古代大名仕曾文正公曾经说:“天下事,在局外呐喊议论,总是无益,必须躬身入局,挺膺负责,方有成事之可冀。”革命先烈李大钊先生也曾感叹:“凡事都要脚踏实地去作,不驰于空想,不骛于虚声,而惟以求真的态度作踏实的工夫。以此态度求学,则真理可明,以此态度做事,则功业可就。”所以本次我们来进行一次真实的线上面试,正所谓空谈误国,实干兴邦,能够检验真理
24 0
让你的简历不落窠臼,精雕细镂写一份真正的技术简历(Python向)
孔子云:食不厌精,脍不厌细。字面意思是:粮食越精致越好,肉类切得越细越好,而实际上强调的是做事情要细致、精益求精,孔夫子阐之未尽,写简历同样不厌精亦不厌细,在上一篇文章:[秋季招聘季如何制作一款“秀色可餐”的简历?由ShareLatex和Python3打造](https://v3u.cn/a_id_161)中,阐述了如何制作一款漂亮的简历模板,但这只是“外在”,一份简历真正灵魂则在于“内涵”,如果内容与模板不匹配,那无异于金玉其外败絮其中,所以吸引招聘者的还得是内容。有道是:模板为王,内容为皇。所以本次我们来讨论一下到底怎么写一份技术简历。
66 0
加载速度提升 15%,关于 Python 启动加速探索与实践的解析 | 龙蜥技术
PyCDS(代码对象共享)技术,将三方库的加载速度提升至与Python 3.11内置模块持平的速度。
96 0
解读最佳实践:倚天710 ARM芯片的Python+AI算力优化 | 龙蜥技术
如何整合 Python+AI 的相关软件并使其在该平台上发挥最高的性能?
110 0
热加载技术:修改Python代码并实时查看结果 ⛵
本文讲解Python热加载技术,以及Reloading工具库的使用。暂停运行的代码,修改补充后重新运行,意味着训练了数个小时的模型参数被舍弃。热加载技术可以解决这个问题。
66 0
云从科技研究院视觉算法实习技术面试-python题-python列表推导式的使用写法
云从科技研究院视觉算法实习技术面试-python题-python列表推导式的使用写法
21 0
【Python基础之函数:多层语法糖、装饰器和装饰器修复技术及递归函数】
【Python基础之函数:多层语法糖、装饰器和装饰器修复技术及递归函数】
28 0
CTO 技术共享整理出来的十个 Python 自动化脚本
CTO 技术共享整理出来的十个 Python 自动化脚本
44 0
2022 技术趋势报告:C++ 重新“受宠”| “data”、“Python”、“Java”上榜热搜词 | 安全话题备受关注
2022 技术趋势报告:C++ 重新“受宠”| “data”、“Python”、“Java”上榜热搜词 | 安全话题备受关注
95 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
给运维工程师的Python实战课
立即下载
Python 脚本速查手册
立即下载
ACE 区域技术发展峰会:Flink Python Table API入门及实践
立即下载