python知识点杂记2
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的更多相关文章
- python知识点杂记
1. Python没有 ++, --操作. 2. Join比+快:tuple比list快 3. Dict的key是区分大小写的 4. 参数顺序:无默认值参数,有默认值参数,tuple,dict 5. ...
- python知识点, float不能用 != 判断
python知识点链接:https://github.com/taizilongxu/interview_python 搜索:python最佳事件 书单:http://lucida.me/blog/d ...
- python 知识点补充
python 知识点补充 简明 python 教程 r 或 R 来指定一个 原始(Raw) 字符串 Python 是强(Strongly)面向对象的,因为所有的一切都是对象, 包括数字.字符串与 函数 ...
- Python知识点汇总
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- 零基础Python知识点回顾(一)
如果你是小白,建议只要安装官网的python-3.7.0-amd64.exe 然后在电脑cmd命令提示符 输入检查是否已经安装pip,一般安装了python都会有的. >pip ...
- ViewModel中C# Property自动添加OnPropertyChanged处理的小工具, 以及相应Python知识点
在做WPFMVVM中经常会遇到一些Model.ViewModel的属性添加添加私有字段和更改通知方法来支持Binding. 比如把: public class Test { public s ...
- Python知识点复习
一.列表1.创建一个文件birthday.py,假设你要祝某人生日快乐!首先将年龄存储在变量age中,将姓名存储在变量name中,让程序输出类似“阿明,23岁生日快乐!” 例如:假设你要祝某人生日快乐 ...
- 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 ...
- python初学杂记
python常用命令: 1.python 或者 python3 打开交互式python解释器 2.python hello.py 通过命令提示符运行python脚本 交互式python解释器常用 ...
随机推荐
- AndroidManifest: windowSoftInputMode属性总结
在Android中,可以通过给Activity设置windowSoftInputMode这个属性来控制软键盘与Activity的主窗口的交互方式. 1. 当Activity成为用户注意的焦点时软键盘的 ...
- [Big Data - Kafka] Kafka设计解析(三):Kafka High Availability (下)
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.Spa ...
- linux每日命令(24):Linux 目录结构
一. 简介 对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只 ...
- 【WPF】图片按钮的单击与双击事件
需求:ListBox中的Item是按钮图片,要求单击和双击时触发不同的事件. XAML中需要引入System.Windows.Interactivity.dll xmlns:i="clr-n ...
- 教你一招:win10下JDK的安装与环境变量配置
1.到官网下载最新版本的JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.安装JDK,同安装其他软件一样 ...
- 关于tomcat的session问题
因为有需要每一个项目有独立端口,并且能够单独启动和关闭,所以在一台服务器上配置了多个tomcat.tomcat是完全一样的,只是各自的端口不一致. 现在的问题是单独启动一个tomcat完全没有问题. ...
- Python默认参数的坑
默认参数的坑 定义一个函数,传入一个list,添加一个end再返回 def add_end(L=[]): L.append('END') return L 正常调用时,结果似乎不错 print add ...
- 如何修改DEDECMS文章标题长度
方法一: 首先你要进入dedecms后台,系统——系统基本参数——其他选项——文档标题最大长度——在这修改为200或更大(其实200应该是足够了). 方法二: 进入phpmyadm ...
- checkmysql.sh
#!/bin/sh # add by lxr MYSQL_SOCK="/tmp/mysql.sock" MYSQL_PWD="qq139547" ARGS=1 ...
- LostRoutes项目日志——编辑project.json
第一个Scene编译后运行会报错: Uncaught TypeError: Cannot read property 'style' of null 这是因为没有在project.json中包含已经编 ...