博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重拾Python 笔记四
阅读量:6533 次
发布时间:2019-06-24

本文共 1390 字,大约阅读时间需要 4 分钟。

  hot3.png

  1. 包裹(packing)位置传递:有时候定义的方法不知道要接受多少个参数,可以在定义的时候使用包裹位置传递:def fun(*name):,在fun方法中可使用type(name)查看name的类型为元组(tuple)。

  2. 包裹关键字传递:定义方法的时候:def fun(**name):,在fun()方法中可使用type(name)查看name的类型为字典(dict),此定义意味着按字典里的键所对应的值来给方法参数赋值。

  3. 解包裹(unpacking):不在定义的时候加*,而是在传给方法时候fun(*a),a是一个元组,表明依次将元组中的元素赋值给fun方法所定义的参数;或者使用fun(**a),a是字典,表示按a中的键所对应的值给fun方法中的元素赋值。

  4. 当多种赋值方法混合使用的时候,有一个基本原则:位置 > 关键字 > 包裹位置 > 包裹关键字。

  5. for a in enumerate(str):,如果str是一个字符串的话,每一次a都是一个元组,包含两个值(index,char),分别是当前字符的索引和当前字符。

  6. 若定义了数个列表,长度一样,则在循环中,for (a,b,c) in zip(lista,listb,listc):表明同时遍历三个列表,将得到的值赋给a,b,c。

  7. 循环对象:一个包含了next()方法的对象(在python 3x中是__next__()方法),该方法会得到对象的下一个结果,当没有下一个结果的时候举出StopIteration错误,for line in open('a.txt'):open('a.txt')返回的就是一个循环对象,for每次都会自动调用其next()方法。循环对象比序列的优点在于,序列要事先生成全部元素,而循环对象只在调用next()的时候生成要使用的元素,节省了空间。

  8. 生成器:生成一个自定义的循环对象,和定义方法一样,不过不使用return,而是用yield,当生成器遇到一个yield时,会暂停运行生成器,返回yield后面的值。当再次调用生成器的时候,会从刚才暂停的地方继续运行,直到下一个yield:

    def gen():         a = 100     yield a     a = a*8     yield a     yield 1000 for i in gen():     print i

生成器有一个简便的写法,即使用生成器表达式(Generator Expression):G = (x for x in range(4)),这个写法相当于:

def gen():        for i in range(4):            yield i;
  1. 表理解(list comprehension):一种快速生成表的方式,对于L = [x**2 for x in range(10)],相当于:

    L = [] for x in range(10):     L.append(x**2)
  2. iter()函数和循环器(iterator):for循环调用循环对象的时候,是通过iter()方法先将循环对象转换为循环器(iterator)。但这只是技术层面,逻辑层面可以忽略这层关系。

转载于:https://my.oschina.net/sixlab/blog/129130

你可能感兴趣的文章
前端进阶(13) - 搭建自己的前端脚手架
查看>>
数据挖掘(二):认识数据
查看>>
从零开始写一个npm包,一键生成react组件(偷懒==提高效率)
查看>>
Golang中的路由
查看>>
【期末考试季】JAVA进阶复习提纲
查看>>
Volley(二)—— 基本Request对象 & RequestQueue&请求取消
查看>>
2017中国系统架构师大会“盛装”来袭
查看>>
Google插件switchysharp的用法
查看>>
中国最强的人工智能学术会议来了
查看>>
Metasploit的射频收发器功能 | Metasploit’s RF Transceiver Capabilities
查看>>
Osmocom-BB中cell_log的多种使用姿势
查看>>
主库 归档 删除策略
查看>>
linux服务器多网卡bond
查看>>
Chrome 更新策略大变:优先安装 64 位版本
查看>>
《Linux从入门到精通(第2版)》——导读
查看>>
路过下载攻击利用旧版 Android 漏洞安装勒索软件
查看>>
ThinkSNS 六大子版本体验及源码下载
查看>>
《算法基础》——1.5实际因素
查看>>
《Java数字图像处理:编程技巧与应用实践》——第3章 基本Swing UI组件与图像显示 3.1 JPanel组件与BufferedImage对象的显示...
查看>>
为什么有人讨厌 Google 的新 Logo?
查看>>