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解释器常用 ...
随机推荐
- FFmpeg: AVFormatContext 结构体分析
AVFormatContext 结构体分析这个结构体描述了一个媒体文件或媒体流的构成和基本信息.这是FFMpeg中最为基本的一个结构,是其他所有结构的根,是一个多媒体文件或流的根本抽象.主要成员释义: ...
- 《Essential C++》读书笔记 之 泛型编程风格
<Essential C++>读书笔记 之 泛型编程风格 2014-07-07 3.1 指针的算术运算(The Arithmetic of Pointer) 新需求1 新需求2 新需求3 ...
- Apache Hadoop YARN: 背景及概述
从2012年8月开始Apache Hadoop YARN(YARN = Yet Another Resource Negotiator)成了Apache Hadoop的一项子工程.自此Apache H ...
- 前台报错:Uncaught TypeError: Cannot read property '0' of null
错误现象: var div1=mycss[0].style.backgroundColor; //这一行提示360和chrome提示:Uncaught TypeError: Cannot read ...
- 【iCore4 双核心板_ARM】例程六:IWDG看门狗实验——复位ARM
实验原理: STM32内部包含独立看门狗,通过看门狗可以监控程序远行,程序运行错误时, 未在规定时间内喂狗,自动复位ARM.本实验通过按键按下,停止喂狗,制造程序运行 错误,从而产生复位. 核心代码: ...
- 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-4 底层驱动之ADC、DAC
源视频包下载地址:链接:http://pan.baidu.com/s/1cL37gM 密码:ys1l 银杏科技优酷视频发布区:http://i.youku.com/gingko8
- java之Pattern类详解
在JDK 1.4中,Java增加了对正则表达式的支持. java与正则相关的工具主要在java.util.regex包中:此包中主要有两个类:Pattern.Matcher. Pattern 声明: ...
- 【webssh】网页上的SSH终端
[webssh] ——记两天来比较痛苦的历程 广义上来说,webssh泛指一种技术可以在网页上实现一个SSH终端.从而无需Xshell之类的模拟终端工具进行SSH连接,将SSH这一比较低层的操作也从C ...
- (转)java 层调用Jni(Ndk) 持久化c c++ 对象
对于Jni(Ndk) 很多人应该都有印象,Android的ndk接触到的机会相对会比较多,本例子以android平台为例,pc端的话就以简单的windows为例, 编码完用vs 或是 gcc进行编译成 ...
- 通过mysql写入php一句话木马
利用mysql写入一句话木马 前提: root权限,知道了服务器的web的绝对路径 select "<?php @eval($_POST['pass']);?>" IN ...