Python黑魔法

1. 赋值

In [1]: x = 1
   ...: y = 21
   ...: print x, y
   ...:
   ...: x, y = y, x
   ...: print x, y
1 21
21 1

2. 列表合并

In [2]: a1 = [(2,3),(3,4)]
    ...: a2 = [(4,5)]
    ...: a = a1 + a2
    ...: print a
[(2, 3), (3, 4), (4, 5)]

3. 字典合并

方式1:

In [3]: d1 = {‘a‘: 1}
    ...: d2 = {‘b‘: 2}
    ...:
    ...: d1.update(d2)
    ...: print d1
{‘a‘: 1, ‘b‘: 2}

方式2:

In [4]: d1 = {‘a‘: 1}
    ...: d2 = {‘b‘: 2}
    ...:
    ...: d = dict(d1.items() + d2.items())
    ...: print d
{‘a‘: 1, ‘b‘: 2}

方式3:

In [5]: d1 = {‘a‘: 1}
    ...: d2 = {‘b‘: 2}
    ...:
    ...: d = dict(d1, **d2)  # 内置函数dict(iterable, **kwarg)
    ...: print d
{‘a‘: 1, ‘b‘: 2}

待续

时间: 2024-10-25 20:06:31

Python黑魔法的相关文章

Python 黑魔法 --- 描述器(descriptor)

Python 黑魔法---描述器(descriptor) Python黑魔法,前面已经介绍了两个魔法,装饰器和迭代器,通常还有个生成器.生成器固然也是一个很优雅的魔法.生成器更像是函数的行为.而连接类行为和函数行为的时候,还有一个描述器魔法,也称之为描述符. 我们不止一次说过,Python的优雅,很大程度在于如何设计成优雅的API.黑魔法则是一大利器.或者说Python的优雅很大程度上是建立在这些魔法巧技基础上. 何谓描述器 当定义迭代器的时候,描述是实现迭代协议的对象,即实现__iter__方

实战丨Python黑魔法之描述符

引言 Descriptors(描述符)是Python语言中一个深奥但很重要的一个黑魔法,它被广泛应用于Python语言的内核,熟练掌握描述符将会为Python程序员的工具箱添加一个额外的技巧.本文我将讲述描述符的定义以及一些常见的场景,并且在文末会补充一下__getattr,__getattribute__, __getitem__这三个同样涉及到属性访问的魔术方法. 描述符的定义 descr__get__(self, obj, objtype=None) --> value descr.__s

Python黑魔法 --- 异步IO( asyncio) 协程

https://www.jianshu.com/p/b5e347b3a17c python asyncio 网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程.无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态.使用协程可以实现高效的并发任务.Python的在3.4中引入了协程的概念,可是这个还是以生成器对象为基础,3.5则确定了协程的语法.下面将简单介绍asyncio的使用.实现协程的不仅仅是asyncio,tornado和g

python类:描述器Descriptors和元类MetaClasses

http://blog.csdn.net/pipisorry/article/details/50444769 描述器(Descriptors) 描述器决定了对象属性是如何被访问的.描述器的作用是定制当你想引用一个属性时所发生的操作. 构建描述器的方法是至少定义以下三个方法中的一个.需要注意,下文中的instance是包含被访问属性的对象实例,而owner则是被描述器修辞的类. __get__(self, instance, owner) – 这个方法是当属性被通过(value = obj.at

Python代码样例列表

├─algorithm│       Python用户推荐系统曼哈顿算法实现.py│      NFA引擎,Python正则测试工具应用示例.py│      Python datetime计时程序的实现方法.py│      python du熊学斐波那契实现.py│      python lambda实现求素数的简短代码.py│      Python localtime()方法计算今天是一年中第几周.py│      Python math方法算24点代码详解.py│      Pyth

python随用随学20200220-异步IO

啥是异步IO 众所周知,CPU速度太快,磁盘,网络等IO跟不上. 而程序一旦遇到IO的时候,就需要等IO完成才能进行才能进行下一步的操作. 严重拖累了程序速度. 因为一个IO操作就阻塞了当前线程,导致其他代码无法执行,所以我们必须使用多线程或者多进程来并发的执行代码. 但是多线程或者多进程虽然解决了并发问题. 但是线程的增加,系统切换线程的开销也会变大. 如果线程太多,CPU的时间就花在了频繁切换线程上.(为啥会有开销,如果不懂的话,请看计算机专业本科教材,操作系统原理) 所以除了多线程和多进程

剑指offer 面试29题

面试29题: 题目:顺时针打印矩阵(同LeetCode 螺旋矩阵打印) 题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 解题方法一:详见剑指offer 解题代码: # -*- coding:utf-8 -*- class Solution: # matrix类型为二维列表,需要返回

python split()黑魔法

split()用法: #!/usr/bin/python str = "Line1-abcdef \nLine2-abc \nLine4-abcd"; print str.split( ); print str.split(' ', 1 ); 以上实例输出结果如下: ['Line1-abcdef', 'Line2-abc', 'Line4-abcd'] ['Line1-abcdef', '\nLine2-abc \nLine4-abcd'] 要点: 1.采用不带参数的split(),它

Python中的三个骚操作和黑魔法技术,装逼必备

本文主要介绍Python的高级特性:列表推导式.迭代器和生成器,是面试中经常会被问到的特性.因为生成器实现了迭代器协议,可由列表推导式来生成,所有,这三个概念作为一章来介绍,是最便于大家理解的,现在看不懂没关系,下面我不仅是会让大家知其然,重要的更是要知其所以然. 列表推导式 前几天有个HR让我谈谈列表推导式,我说这我经常用,就是用旧的列表生成一个新的列表的公式,他直接就把我拒了,让我回去复习一下,挺受打击的,所以决定也帮助大家回顾一下. 内容 列表推导式:旧的列表->新的列表 了解:字典推导式