1、 如果已经有一个list或者tuple,要调用一个可变参数怎么办?
2、 >>> nums = [1, 2, 3]
3、 >>> calc(*nums)
4、 14
*nums表示把nums这个list的所有元素作为可变参数传进去
5、 关键字参数:def person(name, age, **kw):
6、 >>> extra = {'city': 'Beijing', 'job': 'Engineer'}
7、 >>> person('Jack', 24, **extra)
**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra
8、 参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
9、 *args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。
对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的
因为上面这个结论,所有又有了下面的结论:
wrapper()函数的参数定义是(*args, **kw),因此,wrapper()函数可以接受任意参数的调用
10、 使用递归函数需要注意防止栈溢出。所以,递归调用的次数过多,会导致栈溢出。
11、 L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2
12、 要创建一个generator,第一种方法很简单,只要把一个列表生成式的[]改成(),
>>> L = [x * x for x in range(10)]
>>> g = (x * x for x in range(10))
创建L和g的区别仅在于最外层的[]和(),L是一个list,而g是一个generator
13、定义generator的另一种方法:如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator
generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
14、凡是可作用于for循环的对象都是Iterable类型;
15、凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
16、List遍历删除:1、倒叙删除;2、列表生成是[x for x in tst if x !=4 ];3、filter(lambda x:x!=4,tst);4、干脆建一个新的list
17、 函数本身也可以赋值给变量,即:变量可以指向函数。
18、把函数作为参数传入,这样的函数称为高阶函数
19、 常用高阶函数:map,filter,reduce,sorted
20、>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
21、 ['Zoo', 'Credit', 'bob', 'about']
22、reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数
23、 匿名函数lambda x: x * x
冒号前面的x表示函数参数; 匿名函数有个限制,就是只能有一个表达式
24、偏函数:当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。
25、 在Python中,一个.py文件就称之为一个模块(Module)。
26、为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__
27、abc.py在包mycompany下,则abc.py模块的名字就变成了mycompany.abc
28、 sys模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称
运行python3 hello.py Michael获得的sys.argv就是['hello.py', 'Michael]。
29、if __name__=='__main__':
test()
当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败
30、 在Python中,安装第三方模块,是通过包管理工具pip完成的
31、 一般来说,第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索
32、注意:特殊方法“init”前后有两个下划线!!!第一个参数永远是self
33、 和静态语言不同,Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同
34、 在Python中,实例的变量名如果以__开头(两个下划线),就变成了一个私有变量(private),只有内部可以访问
35、 在Python中,变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,
36、 【定制类】有时间可以看下
37、 def bar():
try:
foo('0')
except Exception as e:
print('ValueError!')
raise #抛异常给调用者
43、os.name # 操作系统类型
如果是posix,说明系统是Linux、Unix或Mac OS X,如果是nt,就是Windows系统。
44、在操作系统中定义的环境变量,全部保存在os.environ这个变量中
>>> os.environ.get('PATH')
45、json.dumps方法返回一个str
46、 JSON标准规定JSON编码是UTF-8
47、print(json.dumps(s, default=lambda obj: obj.__dict__))
48、使用装饰器@staticmethod定义静态方法
49、类方法使用@classmethod装饰器定义
50、Python的构造析构方法分别是__int__和__del__,__del__是在对象被Python垃圾回收时调用,因为垃圾回收是由Python控制,所以通常不会重写__del__方法
51、封装、继承、多态是面向对象的三个基本要素
所谓多态,可以简单理解为子类使用与父类相同的接口,但提供不同的功能。通过在子类中重写父类中定义的方法,可以实现多态
不以下划线开关的普通属性,双下划线__开头的属性,代表是私有属性
54、 Isinstance方法可以用来确定一个对象是不是一个类或它的子类的实例:
还可以使用type(obj) is Type进行判断,此方法对于obj是Type的子类的实例的情况将返回False。Issubclass用来判断一个类是否是另一个类的子类,包括直接子类或间接子类
55、 try:
try_suite #监控这里的异常
except Exception,e:
except_suite #异常处理代码
Exception是大部分异常类的基类,因此上述代码支持捕获大多异常
56、sys模块中的exc_info()函数,是另一种获取异常信息的途径,它提供了一个三元祖信息,比我们单纯用异常参数获取的信息多

python知识点杂记2的更多相关文章

  1. python知识点杂记

    1. Python没有 ++, --操作. 2. Join比+快:tuple比list快 3. Dict的key是区分大小写的 4. 参数顺序:无默认值参数,有默认值参数,tuple,dict 5. ...

  2. python知识点, float不能用 != 判断

    python知识点链接:https://github.com/taizilongxu/interview_python 搜索:python最佳事件 书单:http://lucida.me/blog/d ...

  3. python 知识点补充

    python 知识点补充 简明 python 教程 r 或 R 来指定一个 原始(Raw) 字符串 Python 是强(Strongly)面向对象的,因为所有的一切都是对象, 包括数字.字符串与 函数 ...

  4. Python知识点汇总

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  5. 零基础Python知识点回顾(一)

    如果你是小白,建议只要安装官网的python-3.7.0-amd64.exe 然后在电脑cmd命令提示符  输入检查是否已经安装pip,一般安装了python都会有的. >pip         ...

  6. ViewModel中C# Property自动添加OnPropertyChanged处理的小工具, 以及相应Python知识点

    在做WPFMVVM中经常会遇到一些Model.ViewModel的属性添加添加私有字段和更改通知方法来支持Binding. 比如把: public class Test {      public s ...

  7. Python知识点复习

    一.列表1.创建一个文件birthday.py,假设你要祝某人生日快乐!首先将年龄存储在变量age中,将姓名存储在变量name中,让程序输出类似“阿明,23岁生日快乐!” 例如:假设你要祝某人生日快乐 ...

  8. python知识点总结以及15道题的解析

    先看知识点总结 一.序列操作符x in s 如果x是列表s的元素,返回True,否则Falses + t 连接两个序列s和ts*n或者n*s 将序列s复制n次s[i] 返回s中第i元素s[i:j]或s ...

  9. python初学杂记

    python常用命令: 1.python 或者 python3  打开交互式python解释器 2.python hello.py   通过命令提示符运行python脚本 交互式python解释器常用 ...

随机推荐

  1. C#读取CSV

    public class CSVFileHelper { /// <summary> /// 将DataTable中数据写入到CSV文件中 /// </summary> /// ...

  2. js的new Date()日期的使用

    <script type="text/javascript"> //js获取某个月的天数 function days(year,month){ var dayCount ...

  3. javascript form提交 不执行onsubmit事件解决方案

    转载自:https://www.cnblogs.com/lorgine/archive/2011/03/30/2000284.html 今天做项目过程中,需要用到javascript提交form到后台 ...

  4. linux设置开机自启动

    一..在/etc/rc.local文件中添加自启动命令 执行命令: 编辑"/etc/rc.local",添加你想开机运行的命令 运行程序脚本:然后在文件最后一行添加要执行程序的全路 ...

  5. React Native 项目整合 CodePush 全然指南

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/y4x5M0nivSrJaY3X92c/article/details/81976844 作者 | 钱 ...

  6. 【转帖】解决远程连接MariaDB(mysql)很慢的方法

    在CentOS7上安装完成MariaDB之后,发现无论命令行还是程序中连接MariaDB的时候都很慢,大约要一二十秒,于是网上搜索了一番,发现下面的文章内容: 在进行 ping和route后发现网络通 ...

  7. [JS] ECMAScript 6 - Inheritance : compare with c#

    这一章,估计是js最操蛋的一部分内容. 现代方法: 简介 Object.getPrototypeOf() super 关键字 类的 prototype 属性和__proto__属性 原生构造函数的继承 ...

  8. 18职责链模式CoR

    一.什么是职责链模式 Chain of Responsibility(CoR)模式也叫职 责链模式或者职责连锁模式,是行为模式之一, 该模式构造一系列分别担当不同的职责的类的对 象来共同完成一个任务, ...

  9. gdb 脚本调试

    在使用gdb调试程序的时候,有时候需要设定多个断点,重复执行某些操作,而这些操作写起来比较麻烦,这个时候就应该想起来用gdb命令脚本了,它能够很好的完成这些工作.以设置多个断点为例,我写的命令脚本为- ...

  10. Diffuse Shading——漫反射光照改善技巧

    转:http://www.narkii.com/club/thread-355113-1.html 我们会列出两种方法:使用Half Lambert lighting model(半兰伯特光照模型)和 ...