0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何通过星号编写Python代码的最佳方式

如意 来源:百家号 作者:读芯术 2020-07-01 09:58 次阅读

Python以句法简单、简洁而闻名,只需掌握简单的英语就能理解其代码。对初学者来说极具吸引力,它没有声明,没有花哨的字符或者奇怪的句法。正因如此,Python才得以风靡全球。

除此之外,Python还具备一些很酷的特点,比如装饰器和列表解析。这些特点确实能创造奇迹,但*也值得这一美名,小小字符能带来翻天覆地的变化。

先从一个小技巧开始:

In [1]:

first_dict= {‘key1’: ‘hello’, ‘key2’: ‘world’}

second_dict= {‘key3’: ‘whats’, ‘key4’: ‘up’}

In [2]:

#joins the dicts

combined_dict= {**first_dict, **second_dict}

combined_dict

Out[2]:

{‘key1’: ‘hello’, ‘key2’: ‘world’, ‘key3’:‘whats’, ‘key4’: ‘up’}

In [ ]:

这是合并字典的超简单方法!你能明显看出,我仅用了几个星号就将字典结合了起来,我接下来会一一解释。

星号在哪些地方发挥作用?

除了众所周知的乘法作用,星号还能让你轻松完成一些重要任务,例如解包。一般来说,你可以使用星号来解包可迭代对象,也能对双向可迭代对象(就像字典一样)进行双重解包。

In [7]:

# unpackingan iterable

[xfor x inrange(100)] == [*range(100)]

Out[7]:

True

In [8]:

#unpkacing dict keys

d = {‘key1’: ‘A’}

list(d.keys()) == [*d]

Out[8]:

True

In [9]:

#unpacking whole dict

d == {**d}

Out[9]:

True

解包的力量

不要破坏别人的代码

大家也越来越理解这一点,但仍然有人没有遵守。开发者写出的每一个函数都有其特征。如果函数被改变,那么所有基于你的代码而撰写的代码都会被破坏。

我将介绍一种简单的方法,你可以为自己的函数增添更多功能性,同时也不会破坏其向后兼容性,最后你会得到更多的模块化代码。

在你的代码中输入*args和**kwrags,它们会将所有输入都解包进函数。单星号针对标准的可迭代对象,双星号针对字典类的双向可迭代对象,举例说明:

In [1]:

defversion1(a, b):

print(a)

print(b)

In [2]:

version1(4,5)

4

5

In [3]:

#code breaks

version1(4,5,6)

---------------------------------------------------------------------------

TypeError Traceback(most recent call last)

《ipython-input-3-b632c039a799》 in《module》

1# code breaks

----》 2 version1(4,5,6)

TypeError: version1() takes 2 positionalarguments but 3 were given

In [4]:

defversion2(a, b, *args):

print(a)

print(b)

# new function.

if args:

for c in args:

print(c)

In [5]:

version2(1,2,3,4,5)

1

2

3

4

5

In [6]:

#code breaks

version2(1,2,3,4,5, Extra=10)

---------------------------------------------------------------------------

TypeError Traceback(most recent call last)

《ipython-input-6-748b0aef9e5d》in 《module》

1 # code breaks

----》 2 version2(1,2,3,4,5, Extra=10)

TypeError: version2() got an unexpectedkeyword argument ‘Extra’

In [7]:

defversion3(a, b , *args, **kwrags):

print(a)

print(b)

# new function.

if args:

for c in args:

print(c)

if kwrags:

for key, value inzip(kwrags.keys(), kwrags.values()):

print(key,‘:’, value)

In [8]:

version3(1,2,3,4,5, Extra=10)

1

2

3

4

5

Extra : 10

In [ ]:

工作代码和破解代码

这个例子展示了如何使用args和kwargs来接收之后的参数,并留到将来使用,同时也不会破坏你函数中原有的call函数。

星号是Python中很重要的一部分,但却常常被我们忽略。事实上,我们平常没有注意到的关键点还有很多,值得我们去一点点探索。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4717

    浏览量

    68199
  • python
    +关注

    关注

    55

    文章

    4765

    浏览量

    84353
  • 语法
    +关注

    关注

    0

    文章

    44

    浏览量

    9756
收藏 人收藏

    评论

    相关推荐

    5种Python实现方式详解

    Python(CPython)将Python源码编译成CPython字节码,再由虚拟机解释执行这些字节码。如果需要广泛用到C编写的第三方扩展,或让大多数用户都能直接使用你的Python
    发表于 05-22 15:52

    Python最佳学习路线

    Python最佳学习路线
    发表于 05-11 12:11

    python编写条件分支的最佳实践

    =user.address, **extra_args)当你编写分支代码时,请额外关注由分支产生的重复代码块,如果可以简单的消灭它们,那就不要迟疑。4. 谨慎使用三元表达式三元表达式是 Pyt
    发表于 04-21 15:20

    python代码示例之基于Python的日历api调用代码实例

    本文档的主要内容详细介绍的是python代码示例之基于Python的日历api调用代码实例。
    发表于 09-06 14:25 42次下载
    <b class='flag-5'>python</b><b class='flag-5'>代码</b>示例之基于<b class='flag-5'>Python</b>的日历api调用<b class='flag-5'>代码</b>实例

    7个Python调试通过代码详细资料分析

    "Python的应用十分广泛,今天我们来分享7个Python实战项目代码,希望你有所收获。
    的头像 发表于 10-14 09:46 3412次阅读

    python3编写的人脸识别源代码合集免费下载

    本文档的主要内容详细介绍的是python3编写的人脸识别源代码合集免费下载,有3个不同的代码,分别是三种不同的算法。
    发表于 03-12 08:00 6次下载

    如何使用Warp在Python环境中编写CUDA内核

      通常,实时物理模拟代码是用低级 CUDA C ++编写的,以获得最佳性能。在这篇文章中,我们将介绍 NVIDIA Warp ,这是一个新的 Python 框架,可以轻松地用
    的头像 发表于 04-02 16:15 2514次阅读

    利用Python编写简单网络爬虫实例

    利用 Python编写简单网络爬虫实例2 实验环境python版本:3.3.5(2.7下报错
    发表于 02-24 11:05 14次下载

    优化Python代码有哪些工具

    代码。 1. Jupyter Notebook:这个交互式笔记本工具允许您在浏览器中编写和运行Python代码,并以文档形式保存。Jupyter Notebook使得
    的头像 发表于 07-24 09:28 1302次阅读

    卷积神经网络python代码

    的卷积操作,将不同层次的特征进行提取,从而通过反向传播算法不断优化网络权重,最终实现分类和预测等任务。 在本文中,我们将介绍如何使用Python实现卷积神经网络,并详细说明每一个步骤及其原理。 第一步:导入必要的库 在开始编写
    的头像 发表于 08-21 16:41 983次阅读

    TinyDB :一个纯Python编写的轻量级数据库

    TinyDB 是一个纯 Python 编写的轻量级数据库,一共只有1800行代码,没有外部依赖项。 TinyDB的目标是降低小型 Python 应用程序使用数据库的难度,对于一些简单程
    的头像 发表于 10-21 10:22 884次阅读

    python怎样运行代码

    讨论Python代码的运行方式,包括解释器、交互式环境和命令行。 Python代码可以通过两种主
    的头像 发表于 11-22 10:31 1108次阅读

    python代码写完后点哪个运行

    当你完成了编写Python代码后,你可以选择多种方式来运行它。下面是几种常见的运行代码方式
    的头像 发表于 11-24 09:28 4715次阅读

    python软件怎么运行代码

    理解的机器代码。 在本文中,我们将详细介绍如何运行Python代码。我们将探讨以下几个方面:安装Python,设置环境变量,选择一个集成开发环境(IDE)或文本编辑器,
    的头像 发表于 11-28 16:02 837次阅读

    python软件IDLE怎么打多行代码

    用于编写、编辑和运行Python代码的编辑器窗口。在IDLE中编写多行代码有几种方法可以实现。 使用括号与换行符: 在IDLE中
    的头像 发表于 11-29 15:00 3752次阅读