博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习笔记-5.15
阅读量:5938 次
发布时间:2019-06-19

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

1、生成器和迭代器的区别就是用()代替[]

https://taizilongxu.gitbooks.io/stackoverflow-about-python/content/1/README.html

要理解Yield你必须先理解当你调用函数的时候,函数里的代码并没有运行.函数仅仅返回生成器对象,这就是它最微妙的地方:-) 然后呢,每当for语句迭代生成器的时候你的代码才会运转.

当for语句第一次调用函数里返回的生成器对象,函数里的代码就开始运作,直到碰到yield,然后会返回本次循环的第一个返回值.所以下一次调用也将运行一次循环然后返回下一个值,直到没有值可以返回. 一旦函数运行并没有碰到yeild语句就认为生成器已经为空了.原因有可能是循环结束或者没有满足if/else之类的.

但是在你给的代码里得到的是生成器,这样做的好处: 你不需要读这个值两次 你能得到许多孩子节点但是你不希望他们全部存入内存.

2、使用append的时候,是将new_media看作一个对象,整体打包添加到music_media对象中。

music_media = ['compact disc', '8-track tape', 'long playing record']        new_media = ['DVD Audio disc', 'Super Audio CD']        music_media.append(new_media)        print music_media        >>>['compact disc', '8-track tape', 'long playing record', ['DVD Audio disc', 'Super Audio CD']]复制代码

使用extend的时候,是将new_media看作一个序列,将这个序列和music_media序列合并,并放在其后面。

music_media = ['compact disc', '8-track tape', 'long playing record']        new_media = ['DVD Audio disc', 'Super Audio CD']        music_media.extend(new_media)        print music_media        >>>['compact disc', '8-track tape', 'long playing record', 'DVD Audio disc', 'Super Audio CD']复制代码

https://www.cnblogs.com/subic/p/6553187.html

3、list转为str 可以用join

https://blog.csdn.net/roytao2/article/details/53433373

4、x-requested-with请求头

在服务器端判断request来自Ajax请求(异步)还是传统请求(同步):    两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数    可以看到 Ajax 请求多了个 x-requested-with 。    我们可以利用它来判断请求是否是Ajax请求。复制代码

例:同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的。信息错误又要重新填写! 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。 当用户填写完一条信息后,该信息会自动向服务器提交,然后服务器响应客户端,在此过程中,用户依然在填写表格的信息,即向服务器请求多次,节省了用户的时间,提高了用户的体验。 异步:页面上的操作和服务器端的操作互相之间不会造成阻塞

https://blog.csdn.net/xiaotao_css/article/details/70761666

5、 传递的是两个命名实参,这个时候因为有名称标识,参数传递的顺序也就不用在意了。

def foo(x, y=0):         return x - y        foo(y=1, x=3)         2复制代码

修饰器:http://python.jobbole.com/81683/

6、__class__是类的属性的方式来获取类的类型

a=A()

a.class # 'class main.A'

7、其实,Python并没有真正的私有化支持,但可用下划线得到伪私有。 尽量避免定义以下划线开头的变量!

(1)_xxx "单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量, 需通过类提供的接口进行访问;不能用'from module import *'导入

(2)__xxx 类中的私有变量/方法名 (Python的函数也是对象,所以成员方法称为成员变量也行得通。), " 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

(3)xxx 系统定义名字,前后均有一个“双下划线” 代表python里特殊方法专用的标识,如 init()代表类的构造函数。

8、类变量和实例变量

用__dict__解释!!!

https://www.cnblogs.com/duanv/p/5947525.html

9、【类和实例都可以调用】@staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。 【类和实例都可以调】@classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。(只能访问类变量,不能访问实例变量) 如果在@staticmethod中要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。????????(只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性。) 而@classmethod因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。

https://blog.csdn.net/qq_15037231/article/details/77943109

10、Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

s1 = "-"        s2 = ""        seq = ("r", "u", "n", "o", "o", "b") # 字符串序列        print (s1.join( seq ))        print (s2.join( seq ))                r-u-n-o-o-b        runoob复制代码

11、xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。

要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。

转载于:https://juejin.im/post/5afa31786fb9a07aa5426fe4

你可能感兴趣的文章
消除字号标签<h1><h2><h3>的自动换行
查看>>
关于ListView的一些不常用到的属性
查看>>
201521123040《Java程序设计》第13周学习总结
查看>>
Mybatis的分页插件com.github.pagehelper
查看>>
Rand工具类
查看>>
iOS边练边学--cocoaPods管理第三方框架--命令行方式实现
查看>>
线程学习笔记(一)
查看>>
黄聪:bootstrap的模态框modal插件在苹果iOS Safari下光标偏离问题解决方案
查看>>
黄聪:在Windows下搭建***服务器
查看>>
git常用命令
查看>>
[Android学习笔记]EditText的使用
查看>>
《活出生命的意义》读后感
查看>>
第四次作业
查看>>
第二次软件综合实验专题作业——结对编程 1759103 李思佳 、 1759107 陶彦婷
查看>>
TCP协议三次握手过程分析
查看>>
std::lexicographical_compare
查看>>
Java设计模式:代理模式(一)
查看>>
直线栅格化(基于 Bresenham 算法)
查看>>
python IDLE 如何实现清屏
查看>>
三维系统应用实例——截图
查看>>