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. idea 添加项目到svn

    version control 改变项目为svn管理 如图  分享 share dic 添加新地址 share 剩下的 就是设置忽略目录 提交

  2. 从去除毛刺的策略看开运算opening_circle和闭运算closing_circle的异同

    例一:毛刺在往外凸的面上 策略1:分割出黑色部分,然后通过开运算去掉毛刺,再通过原黑色部分区域减去开运算之后的区域,得到毛刺部分的区域. read_image (Tu, 'C:/Users/xiahu ...

  3. Oracle分析函数-排序排列(rank、dense_rank、row_number、ntile)

    (1)rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名. (2)dense_rank函数返回一个唯一的值, ...

  4. one-to-all及all-to-all网络通信模式

    在这两种模式下,因为 占用的通信通道非常高,形成了一个一对多的通道 甚至是多对多的通道,导致现有的fattree网络结构负载太大.

  5. Python之保存和读取字典

    import pickle def save_obj(obj, name ): with open('obj/'+ name + '.pkl', 'wb') as f: pickle.dump(obj ...

  6. 【转】WPF自定义控件与样式(6)-ScrollViewer与ListBox自定义样式

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要内容: ScrollViewer的样式拆解及基本样式定义: ListBox集合 ...

  7. 【转帖】Mysql多维数据仓库指南 第一篇 第1章

     Mysql多维数据仓库指南 第一篇基本原理 章节列表: 第1章:基本组成 第2章:维度历史 第3章:维度可加性 第4章:维度查询 本篇概述 你将运用关系数据库来实施一个维度数据仓库.事实表和维表这两 ...

  8. 关于枚举,enum、Enum、EnumSet、RegularEnumSet、JumboEnumSet

    Apache Commons Lang. 在版本3中,enum相关的工具就留下EnumUtils. 首先, 所有enum,都默认实现了抽象类 java.lang.Enum .所以,所有enum都具备E ...

  9. Redis数据库高级实用特性:持久化机制

    Redis数据库高级实用特性:持久化机制 大型web系统数据缓存设计 Redis高级特性:虚拟内存的使用技巧 Redis高级实用特性:安全性与主从复制 Memcached.Redis OR Tair

  10. HTTP 响应状态码

    MDN https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status section 10 of RFC 2616 https://tools.ie ...