Python学习记录3

  • 为什么匿名函数叫匿名函数?

Lambda 函数又称匿名函数,匿名函数就是没有名字的函数,函数没有名字也行?当然可以啦。有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要非给它取个名字不可。
好比电影里面的群众演员,往往他们的戏份很少,最多是衬托主演,跑跑龙套,他们需要名字吗?不需要,因为他们仅仅只是临时出镜,下次可能就用不着了,所以犯不着费心思给他们每个人编个号取个名字,毕竟取个优雅的名字是很费劲的事情。

引用自这里,这篇博文还提到了python应用的两个场合,函数式编程和闭包

  • 闭包
    闭包跟程序里面有函数的区别是,后者是直接在母函数内执行,而前者返回定义的子函数。
    闭包使得局部变量可以在函数外面被访问,有点像只有一个方法的类。

请参考这里

  • python中的函数究竟是什么?听说类也可以作为函数调用是怎么回事?

这里

  • 神马都是对象,不仅函数是对象,连类都是对象。

  • 类方法和静态方法
    类是一个对象,对象可以有方法,类方法就是跟类绑定在一起的方法;静态方法跟普通函数最大的不同就是要用类或者实例进行调用。

  • for循环的运行过程
    首先调用方法iter获取迭代器,每次循环调用next获取元素

  • 函数跟方法居然不一样!!!!
    定义在类中的不一定就是方法,方法和函数的主要区别还是是否从属于某个实例。要将类里面的当作函数,我们要输入一个类,还记得我们定义类中的方法的时候输入一个self参数了吗?
    更加详细见这里

  • 为什么定义方法的时候一定要输入参数self呢?
    ??

  • 为什么有了列表还要有元组?
    详细请见这里
    两者的区别:最重要的一点是tuple是不可变类型,大小固定,而 list 是可变类型、数据可以动态变化。

不可变所以操作起来快,占用空间少。
元组不可变可以当作字典的键,

  • python常犯错误
    注意4、5、6

  • ==和is的区别
    ==强调的是值的相等,而is是内存地址的相同与否

  • 变量是对象的一个引用,参数就是变量。
    变量本身没有类型信息,类型信息存储在对象中,这和C/C++中的变量有非常大的出入(C中的变量是一段内存区域)

  • Python 函数中,参数是传值,还是传引用?

  • 生成器与迭代器的区别
    功能一样,但是实现不一样,前者更加优雅,生成器就像ios,迭代器就像android

  • 代码这样写更优雅
    注意3(使用enumerate)、4(字符串连接)、8(该使用队列的地方要使用队列)、9(序列解包)、

  • 代码这样写不止于优雅

  • enumerate用法
colors = ['red', 'green', 'blue', 'yellow']
for color in enumerate(colors):
    print ('--->', color)

输出:

---> (0, 'red')
---> (1, 'green')
---> (2, 'blue')
---> (3, 'yellow')

这样可以方便我们这样子写

colors = ['red', 'green', 'blue', 'yellow']

for i, color in enumerate(colors):
    print (i, '--->', color)

输出:

0 ---> red
1 ---> green
2 ---> blue
3 ---> yellow
  • 如何让字符串连接更高效

字符串连接时,普通的方式可以用 + 操作

names = ['raymond', 'rachel', 'matthew', 'roger',
         'betty', 'melissa', 'judith', 'charlie']
s = names[0]
for name in names[1:]:
    s += ', ' + name
print (s)

pythonic

print (', '.join(names))

join 是一种更加高效的字符串连接方式,使用 + 操作时,每执行一次+操作就会导致在内存中生成一个新的字符串对象,遍历8次有8个字符串生成,造成无谓的内存浪费。而用 join 方法整个过程只会产生一个字符串对象。

  • 队列
from collections import deque
names = deque(['raymond', 'rachel', 'matthew', 'roger',
               'betty', 'melissa', 'judith', 'charlie'])
names.popleft()
names.appendleft('mark')
  • 遍历字典的高效方法
    方法一每次都要计算hash值,方法二在python3中使用迭代器
# 方法一
for k in d:
    print (k, '--->', d[k])

# 方法二
for k, v in d.items():
    print (k, '--->', v)
  • 获取字典元素
d = {'name': 'foo'}
if d.has_key('name'):
    print(d['name'])
else:
    print('unkonw')

pythonic

d.get("name", "unknow")
  • 字符编解码理解
    解码通常是将密文解为明文,字节流是比较晦涩的,而字符串是比较明朗,因此,编解码如下
Paste_Image.png

更多编码的知识请看这里

  • i += x 与 i = i + x的区别

  • 元类就是类的类,真正的类
    平常的我们所说的类其实也是一种对象,创建这些类(其实是对象)的类
    详细看这里

  • 协程
    协程是消费者,有点像回调函数,得到数据的地方用yield。
    首先生产者将消费者作为参数调入,在生产者中生产出数据后,调用消费者.send,这个时候就会回去消费中消费数据,然后再回来。

def consumer():
    r = ''
    while True:
        n = yield r
        if not n:
            return
        print('[CONSUMER] Consuming %s...' % n)
        r = '200 OK'

def produce(c):
    c.send(None)
    n = 0
    while n < 5:
        n = n + 1
        print('[PRODUCER] Producing %s...' % n)
        r = c.send(n)
        print('[PRODUCER] Consumer return: %s' % r)
    c.close()

c = consumer()
produce(c)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容