当前位置: 首页 > 科技观察

一点星号创造奇迹:一个字符可以改变你写Python代码的方式

时间:2023-03-21 14:57:17 科技观察

Python以其简单简洁的语法着称,其代码只需掌握简单的英语即可理解。对初学者非常有吸引力,它没有声明,没有花哨的字符或奇怪的语法。正因如此,Python风靡全球。除此之外,Python还有一些很酷的特性,比如装饰器和列表理解。这些功能确实可以创造奇迹,但公式也名副其实,小字符可以产生很大的不同。从一个小技巧开始:In[1]:first_dict={'key1':'hello','key2':'world'}second_dict={'key3':'whats','key4':'up'}在[2]:#joinsthedictscombined_dict={**first_dict,**second_dict}combined_dictOut[2]:{'key1':'hello','key2':'world','key3':'whats','key4':'up'}In[]:这是一种超级简单的组合字典的方法!你可以清楚地看到,我只用几个星号组合了字典,我将在下面解释。星号在哪里发挥作用?除了众所周知的乘法作用外,星号还可以让您轻松执行一些重要任务,例如拆包。通常,您可以使用星号来解压可迭代对象,并且可以双重解压双向可迭代对象(如字典)。In[7]:#unpackinganiterable[xforxinrange(100)]==[*range(100)]Out[7]:TrueIn[8]:#unpkacingdictkeysd={'key1':'A'}list(d.keys())==[*d]Out[8]:TrueIn[9]:#unpackingwholedictd=={**d}Out[9]:True拆包的威力不要破坏别人的代码大家越来越明白了这个,但是还是有人不遵守。开发人员编写的每个函数都有自己的特点。如果更改功能,则所有基于您的代码编写的代码都将中断。来源:unsplash我将介绍一种简单的方法,您可以在不破坏向后兼容性的情况下向您的函数添加更多功能,并且您最终将获得更多模块化代码。在您的代码中键入*args和**kwrags,它们会将所有输入解压到函数中。单星号用于标准可迭代对象,双星号用于字典类的双向可迭代对象。例如:In[1]:defversion1(a,b):print(a)print(b)In[2]:version1(4,5)45In[3]:#codebreaksversion1(4,5,6)--------------------------------------------------------------------------TypeErrorTraceback(mostrecentcalllast)in1#codebreaks---->2version1(4,5,6)TypeError:version1()takes2positionalargumentsbut3weregivenIn[4]:defversion2(a,b,*args):print(a)print(b)#newfunction.ifargs:forcinargs:print(c)In[5]:version2(1,2,3,4,5)12345In[6]:#codebreaksversion2(1,2,3,4,5,Extra=10)----------------------------------------------------------------------------TypeErrorTraceback(mostrecentcalllast)in1#codebreaks---->2version2(1,2,3,4,5,Extra=10)TypeError:version2()gotanunexpectedkeywordargument'Extra'In[7]:defversion3(a,b,*args,**kwrags):打印(a)打印(b)#newfunction.ifargs:forcinargs:print(c)ifkwrags:forkey,valueinzip(kwrags.keys(),kwrags.values()):print(key,':',value)In[8]:version3(1,2,3,4,5,Extra=10)12345Extra:10In[]:此示例显示的工作代码和破解代码如何使用args和kwargs接收以下参数并保存以供将来使用,而不破坏您的函数中的原始调用函数。星号是Python中非常重要的一个部分,但是却经常被我们忽略。其实还有很多关键点是我们平时没有注意到的,值得一点点去探究。

最新推荐
猜你喜欢