安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

20个Python面试题来挑战你的知识

11月27日 溷元楼投稿
  在本文中,我将我的一些笔记变成了20个面试问题,涵盖了数据结构、核心编程概念和Python最佳实践。
  希望你能完成其中的一些并重温你的Python技能。
  事不宜迟,让我们直接进入。1。列表和元组有什么区别?你应该什么时候使用哪一个?
  列表是可变数据结构,而元组是不可变数据结构。
  Python中的可变对象具有更改其值的能力。
  列表是动态的:你可以向其中添加项目或覆盖和删除现有项目。
  元组是固定大小的:它们没有方法append或extend方法。你也不能从中删除项目。
  元组和列表都支持索引并允许使用in运算符检查其中的现有元素。
  在某些情况下,我认为元组可能有用。如果你声明一个你知道永远不会更改的项目集合,或者你将只循环而不更改其值,请使用元组。如果你寻找性能,元组比列表更快,因为它们是只读结构。如果你不需要写操作,请考虑使用元组。如果你想防止意外写入不需要更改的数据,元组可以使你的代码更安全。
  这是一个代码示例,显示了元组与列表的不同之处。numbers〔1,2,3,4,5〕numbers〔1〕100print(numbers)〔1,100,3,4,5〕names(john,joe,alice)names〔0〕bob)TypeErrorTraceback(mostrecentcalllast)ipythoninput225012ce34a87inmodule1names〔0〕bobTypeError:tupleobjectdoesnotsupportitemassignment2多处理和多线程有什么区别?你应该什么时候使用哪个?
  多处理和多线程是旨在加快代码速度的编程范例。
  当你使用多处理时,你可以在进程上并行计算。进程是独立的,不相互通信:它们不共享相同的内存区域,并且相互之间有严格的隔离。在应用方面,多处理适用于CPU密集型工作负载。但是,它确实具有与进程数量成正比的大量内存占用。
  另一方面,在多线程应用程序中,线程存在于单个进程中。因此,它们共享相同的内存区域:它们可以修改相同的变量并且可以相互干扰。虽然进程是严格并行执行的,但在Python中的给定时间点只执行一个线程,这是由于全局解释器锁(GIL)。多线程适用于受IO限制的应用程序,例如网页抓取或从数据库中获取数据。
  如果你想了解有关多线程和多处理的更多信息,我建议你阅读我之前关于多进程跟线程的文章关于多线程你知道多少呢?,该文章全面介绍了这两个概念。3模块、包和库之间有什么区别?
  模块只是一个Python文件,旨在导入脚本或其他模块。它包含函数、类和全局变量。
  包是模块的集合,它们在文件夹中组合在一起以提供一致的功能。包可以像模块一样被导入。它们通常有一个init。py文件告诉Python解释器按原样处理它们。
  库是包的集合。4python中的多线程有什么问题?
  全局解释器锁(或GIL)可防止Python解释器同时执行多个线程。简而言之,GIL强制在Python中的任何时间点只执行一个线程。
  这代表了依赖多线程代码的CPU密集型应用程序的一个很大的性能瓶颈。5什么是装饰器?你能描述一下装饰器值得使用的情况吗?
  装饰器是一个接收函数作为输入并返回函数作为输出的函数。装饰器的目标是在不改变其核心机制的情况下扩展输入函数的行为。
  使用装饰器还可以防止你重复自己。它迫使你编写一次通用代码,然后将其用于需要它的每个功能。
  装饰器大放异彩的典型用例是日志记录。
  例如,想象一下,你希望将传递给程序中调用的每个函数的所有参数值记录到终端。你可以遍历每个函数定义并将其写下来,或者你可以只编写一个装饰器来执行此日志记录任务并将其应用于所有需要它的函数。
  将装饰器应用于函数只需在该函数的定义上方添加一行即可。没有装饰器defmyawesomefunction():做一些很棒的事情带有装饰器myawesomedecoratordefmyawesomefunction():做更棒的事情
  下面是一个代码示例,它创建了一个名为的装饰器,该装饰器log记录了传递给函数的参数的值。importlogginglogging。basicConfig(format(asctime)s〔(levelname)s〕(name)s(message)s,levellogging。INFO,datefmtYmdH:M:S,streamsys。stdout,)loggerlogging。getLogger(notebook)deflog(func):defwrapper(args,kwargs):outputfunc(args,kwargs)msgf{func。name}wasrunwiththefollowingargs:{args}andthefollowingkwargs{kwargs}logger。info(msg)returnoutputreturnwrapperlogdefprintargs(args,kwargs):print(args)print(kwargs)printargs(10,a2,btest)(10,){a:2,b:test}2022030618:07:05,248notebookINFOprintargswasrunwiththefollowingargs:(10,)andthefollowingkwargs{a:2,b:test}printargs(10,100,a2,btest)(10,100){a:2,b:test}2022030618:07:05,562notebookINFOprintargswasrunwiththefollowingargs:(10,100)andthefollowingkwargs{a:2,b:test}
  装饰器还可以用于其他目的,例如计时功能、验证输入数据、执行访问控制和身份验证、缓存等。6如何正确地将数据写入文件?否则会出什么问题?
  使用上下文管理器是关键。
  当你使用open没有上下文管理器的语句并且在关闭文件之前发生一些异常时(关闭文件是你在以这种方式打开文件时必须记住的事情)可能会发生内存问题并且文件可能会在此过程中损坏。
  当你with用来打开一个文件并且发生异常时,Python保证该文件是关闭的。d{foo:1}badpracticefopen(。data。csv,wb)f。write(somedata)vd〔bar〕KeyErrorf。close()neverexecuteswhichleadstomemoryissuesf。close()goodpracticewithopen(。data。csv,wb)asf:f。write(somedata)vd〔bar〕pythonstillexecutesf。close()eveniftheKeyErrorexceptionoccurs7函数参数是按引用传递还是按值传递?
  在Python中,所有函数参数都是通过引用传递的:这意味着如果将参数传递给函数,则函数将获得对同一对象的引用。
  如果对象是可变的并且函数改变了它,则参数将在函数的外部范围内发生变异。让我们看一个例子:defappendnumber(numbers):numbers。append(5)numbers〔1,2,3,4〕print(fbefore:{numbers}〔1,2,3,4〕appendnumber(numbers)numbers〔1,2,3,4,5〕8如何覆盖对象的打印方式?
  使用thestr和reprdunder方法。
  这是一个示例,它演示了Person类中的实例在打印到控制台时如何被很好地格式化。classPerson:definit(self,firstname,lastname,age):self。firstnamefirstnameself。lastnamelastnameself。ageagedefstr(self):returnf{self。firstname}{self。lastname}({self。age})defrepr(self):returnf{self。firstname}{self。lastname}({self。age})personPerson(John,Doe,30)thankstostrJohnDoe(30)personthankstoreprJohnDoe(30)9编写一个计算整数n阶乘的函数
  递归是关键deffactorial(n):ifn0:return1else:returnnfactorial(n1)10is和运算符有什么区别?
  是一个测试相等性的运算符,而is是一个测试身份的运算符。
  两个对象可以具有相同的值,但不一定相同(即具有相同的内存地址)。
  请记住,这aisb是id(a)id(b)。11什么时候不应该使用assert语句?
  assert语句对于内部测试和完整性检查很有用。
  但是,它不应该用于执行数据验证或错误处理,因为出于性能原因,它通常在生产代码中被禁用。
  想象一下,如果你使用断言检查管理员权限:这可能会在生产中引入很大的安全漏洞。
  assert你可以抛出自定义错误,而不是使用该语句。Dangerouscode!defdeleteproduct(user,productid):assertuser。isadmin()user。deleteproduct(productid)Handlethisproperlybyraisinganerrordefdeleteproduct(user,productid):ifnotuser。isadmin():raiseAuthError(Usermusthaveadminprivileges)else:user。deleteproduct(productid)12什么是Python生成器?
  Python生成器是一个生成一系列项目的函数。
  生成器看起来像典型的函数,但它们的行为是不同的。对于初学者,不使用return语句,而是使用yield语句。
  然后,调用生成器函数不会运行该函数:它只会创建一个生成器对象。生成器的代码仅在next函数应用于生成器对象或生成器被迭代时执行(在这种情况下,next函数被隐式调用)
  在生成器对象上调用函数的次数next等于yield在生成器函数中调用语句的次数。
  你可以使用for循环或生成器表达式定义生成器。defrepeat(n,message):forinrange(n):yieldmessagerepeathellofivetimesrepeat(5,hello)formessageinrepeathellofivetimes:print(message)hellohellohellohellohellorepeathellofivetime(helloforinrange(5))repeathellofivetimesgeneratorobjectgenexprat0x7fb64f2362d0formessageinrepeathellofivetimes:print(message)hellohellohellohellohello13类方法和静态方法有什么区别?什么时候应该使用哪个?
  静态方法是一种对调用它的类或实例有任何了解的方法。这是一种逻辑上属于该类但没有隐式参数的方法。
  可以在类或其任何实例上调用静态方法。
  类方法是传递给调用它的类的方法,就像self传递给类中的其他实例方法一样。类方法的强制参数不是类实例:它实际上是类本身。
  类方法的一个典型用例是提供另一种构造实例的方法:执行此操作的类方法称为类的工厂。
  这是一个使用类方法的Employee类,该类方法创建实例的方式与类的主构造函数略有不同。classEmployee(object):definit(self,firstname,lastname):self。firstnamefirstnameself。lastnamelastnaleclassmethoddeffromstring(cls,namestr):firstname,lastnamemap(str,namestr。split())employeecls(firstname,lastname)returnemployeeahmedEmployee。fromstring(AhmedBesbes)14举一个例子说明你如何使用zip和枚举
  该zip函数将多个迭代作为输入并将它们聚合到一个元组中。例如,如果你想同时遍历两个列表,这可能很有用。names〔john,bob,alice〕ages〔10,16,20〕forname,ageinzip(names,ages):print(name,age)john10bob16alice20
  该enumerate函数允许循环遍历一个可迭代对象并同时访问正在运行的索引和项目。names〔john,bob,alice〕forindex,nameinenumerate(names):print(index,name)0john1bob2alice15你会如何在给定的函数中使用args和kwargs?
  args和kwargs通过接受可变数量的参数使Python函数更加灵活。args在列表中传递可变数量的非关键字参数kwargs在字典中传递可变数量的关键字参数
  这是一个函数示例,该函数采用可变数量的关键字参数,这些参数收集在名为的字典中data(请注意,它不需要命名kwargs)
  16给出一个使用map的函数式编程示例numbers〔1,2,3,4,5〕numberstimes2list(map(lambdan:n2,numbers))numberstimes2〔2,4,6,8,10〕17continue和break语句有什么区别
  该break语句终止包含它的循环。程序立即移动到循环外部范围内的代码段。
  另一方面,该continue语句跳过当前迭代的其余代码并移至下一个迭代。
  18如何防止函数被调用不必要的时间?
  使用缓存。
  如果与给定输入关联的输出在一段时间内没有变化,则使用缓存对函数有意义。
  一个典型的场景是查询一个web服务器:如果你第一次查询一个URL,并且你知道响应不会改变,你可以缓存结果。fromcachetoolsimportcached,TTLCachecacheTTLCache(maxsize100,ttl86400)cached(cache)defextractarticlecontent(url):responserequests。get(url)contentresponse。contentreturncontent19给出一些PEP8指南每个缩进级别使用4个空格。进口应按以下顺序分组:标准库导入。相关第三方进口。本地应用程序库特定的导入。函数名和变量名应为小写并用下划线分隔类名使用CapWords约定。20如何使用具有2GBRAM的计算机在Python中读取8GB文件?
  此解决方案适用于任何大型(甚至更大)文件。
  当你打开文件时,你需要做的就是将文件对象用作迭代器:在循环此文件对象时,你将一次获取一行,并且前面的行将从内存中清除(即它们是垃圾收集)。
  这样,文件将永远不会完全加载到内存中。withopen(。largedataset。txt)asinputfile:forlineininputfile:processline(line)感谢阅读
  这是我在面试中经常看到的一些问题的概述。我希望你从文章中学到了一些东西。20个Python面试题来挑战你的知识
投诉 评论 转载

10月8日9日决出冠军!成都世乒赛全部参赛名单出炉距离2022年第56届国际乒联世界乒乓球团体锦标赛(决赛)成都开幕还有一周,赛事相关筹备工作进入收尾阶段。东道主中国队正在成都备战,其他队伍以及参赛人员将于9月26日抵达……AI初创公司Diveplane完成2500万美元A轮融资,M近日,人工智能初创公司Diveplane宣布完成2500万美元A轮融资。本轮融资由ShieldCapital领投,CalibrateVentures、L3HarrisTechn……赚钱之神邱永汉我把交易账户资金翻了250倍中国曾有一位名副其实的赚钱之神邱永汉,他曾把投入股市的资金翻了250倍。对于现在的投资者而言,邱永汉可能比较陌生,但在上个世纪在中国台湾地区和日本家可谓家喻户晓。虽然大多……全民负债,深陷泥潭的负债者该怎么办?三条锦囊让负债者应对自如川叫兽:轻资产创业资深、专业玩家,擅长无中生有,从0到1,每天早上5点20分不见不散!种种原因,现在负债的人数已经达到了前所未有的高峰,很多人都陷入在债务泥潭里苦苦的挣扎……10月20日淮22转债上市淮22转债将于10月20日上市交易。可转债情况淮22转债债券等级为AAA级,等级较好,发行规模30。000亿,规模较大。其正股淮北矿业(600985)最近一个交易日……消费主引擎动力强劲来源:人民网人民日报数据来源:商务部制图:蔡华伟北京市朝阳区三里屯太古里,不少时尚品牌在这里开设北京首店乃至亚洲首店,首店、首发、首秀接连上新,持续激发人们的消费热……20个Python面试题来挑战你的知识在本文中,我将我的一些笔记变成了20个面试问题,涵盖了数据结构、核心编程概念和Python最佳实践。希望你能完成其中的一些并重温你的Python技能。事不宜迟,让我……LOL老英雄回忆之男刀,曾经公认刺客之魂,重做后变成跑酷小子前言在联盟之中相比大家都有过被刺客支配的恐惧。但新玩家绝对体验不到的是,现版本的刺客,除了奇亚娜之外,和以前的老刺客相比,实在是没有可比性。曾经的刺客英雄们才叫做真正的脆……王者荣耀鲁班大师新皮肤上线,峡谷随处可见?这几种组合你会吗前言:王者荣耀自公测到现在已经快七年了,目前也来到了S28赛季,同时也上线了一百多个英雄,四百多个皮肤了。我们都知道,每个赛季,一般都会有一两个新英雄上线,但皮肤却不一样,这不……高贵妃谭卓罕见晒娃!穿高开叉裙子踩凳子,一旁孩子姿态悠闲近日,高贵妃谭卓晒出一组和自己孩子的合照,并配文清晨闻着你的奶香气醒来,大蚊子妈妈叮着亲小脸蛋问:知道什么是无与伦比的幸福么?!看着照片中的我们,你独立而独特,我自由而自我,好……38岁奥运冠军正式回归!冲击奥运四连冠中国历史第1人,名垂青当今中国体坛,谁能够担得起军神这一称号?我所能想到的,只有已经年满38岁的举重奥运会3金王吕小军,吕晓军在东京奥运会上再次封神,现在吕小军的目标是巴黎夺冠,这可不是轻轻松松的事……2023年F1赛历暂行版公布!中国大奖赛时隔四年回归央视网消息:昨日晚间,国际汽联公布了2023年F1赛历暂行版。中国大奖赛在列,美国有3站、意大利2站。2023年F1全年共有24站比赛,中国大奖赛位列第4站,正赛于4月1……
国内外女星红毯大尺度比拼,一个比一个大胆,61岁穿透视装张常宁或为任性付出代价!归队遥遥无期,如今只有一条路可走战舰世界乘风破浪前行,全新版本强势来袭争气!中国内线闪耀WNBA,首钢有望签勇士旧将,方硕进离队名她是著名歌星,背叛祖国被判死刑,枪决前爆出一秘密后被无罪释放2022年性价比冰箱选购攻略!407L1级能效母婴专区2XX大厂也玩不动,腾讯又一平台宣布凉凉让手机速度飞起来被三星控制的韩国有多惨?这下明白,三星的真实样子远超我们想象调查显示绝大多数中国人吃错了,来自40万的研究生吃更健康抄书的第28天,培养一个优秀的孩子,父母需要经历三次失望那些关于真诚的小众文案

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利