天池计划第三天:Python 入门(下)
1.完全理解Python迭代对象、迭代器、生成器
容器(container)、可迭代对象(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,我将用一篇文章试图将这些概念以及它们之间的关系捋清楚。
2.Lambda表达式是Python中一类特殊的定义函数的形式,使用它可以定义一个匿名函数。与其它语言不同,Python的Lambda表达式的函数体只能有单独的一条语句,也就是返回值表达式语句
lambda 形参列表 : 函数返回值表达式语句
下面是个Lambda表达式的例子:
#!/usr/bin/envpython
li=[{“age”:20,“name”:“def”},{“age”:25,“name”:“abc”},{“age”:10,“name”:“ghi”}]
li=sorted(li, key=lambda x:x[“age”])
print(li)
- 命名关键字参数
def functionname(arg1, arg2=v, args, *, nkw, *kw):
“函数_文档字符串”
function_suite
return [expression]
*, nkw - 命名关键字参数,用户想要输入的关键字参数,定义方式是在nkw 前面加个分隔符 *。
如果要限制关键字参数的名字,就可以用「命名关键字参数」
使用命名关键字参数时,要特别注意不能缺少参数名。
6. 参数组合
在 Python 中定义函数,可以用位置参数、默认参数、可变参数、命名关键字参数和关键字参数,这 5 种参数中的 4 个都可以一起使用,但是注意,参数定义的顺序必须是:
位置参数、默认参数、可变参数和关键字参数。
位置参数、默认参数、命名关键字参数和关键字参数。
要注意定义可变参数和关键字参数的语法:
*args 是可变参数,args 接收的是一个 tuple
**kw 是关键字参数,kw 接收的是一个 dict
命名关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。定义命名关键字参数不要忘了写分隔符 *,否则定义的是位置参数。
警告:虽然可以组合多达 5 种参数,但不要同时使用太多的组合,否则函数很难懂。
7.python 闭包
闭包使得局部变量在函数外被访问成为可能
https://foofish.net/python-closure.html
8.python _new_方法
https://www.jianshu.com/p/08d7956601de
9.python的单例模式
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式。
https://www.jianshu.com/p/6ca1b0cdef3b
10.概念划清:python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法
cnblogs.com/chenhuabin/p/10055316.html
“类名.变量名”绑定的是类变量,“实例名.变量名”绑定的是实例变量。(不推荐)
类变量可以通过“类名.变量名”和“实例名.类变量名”(不推荐)的方式访问。实例变量只能通过“实例名.变量名”的方式来访问。
静态方法,类方法,实例方法 :
实例方法,声明时传入的第一个参数必须为self,self指代的就是实例本身。
实例方法能访问实例变量,实例方法可以通过“实例名.实例方法名”来调用,如果要通过类来调用,必须必须显式地将实例当做参数传入。