python 匿名函数 内置函数 模块和包 开发规范
匿名函数
匿名函数即没有绑定名字的函数,没有绑定名字,意味着只能用一次就会被回收
所以说匿名函数的应用场景就是:某个功能只用一次就结束了
定义方式 lambda
lambda n:n**2
举例
#max与lambda的结合 salaries={ 'egon':3000, 'alex':100000000, 'wupeiqi':10000, 'yuanhao':2000 } def f1(k): return salaries[k] print(max(salaries,key=lambda k:salaries[k])) # max() 取最大值的函数 可以通过 key 改变比较的对象 print(min(salaries,key=lambda k:salaries[k])) # min() 取最小值的函数 print(sorted(salaries,key=lambda k:salaries[k])) print(sorted(salaries,key=lambda k:salaries[k],reverse=True))
举例
map,reduce,filter l=['alex','wupeiqi','yuanhao','huanghongwei'] print(list(map(lambda x:x+'_NB',l)))
函数递归
def age(n): if n == 1: return 18 return age(n-1)+2 print(age(5))
内置函数
模块的使用
导入模块,只会在第一次导入时执行源文件的代码
如果模块已经加载到内存了,下一次导入直接引用内存中导入的结果
导入模块
import spam
import 导入文件都做了哪些事?
1 以源文件为准产生一个名称空间
2 以刚刚产生的名称空间为准,执行源文件的代码
3 会在当前文件中定义一个名字,这个名字就是模块名,用来引用模块中的名字
举例
import spam money=0 def read1(): print('from ------>') read1() spam.read1() spam.read2() money=1000000000 spam.change() print(money) spam.read1()
定义的spam文件
为模块起别名
import spam as sm
在一行导入多个模块
import spam,time
from...import...
from spam import money,read1,read2,change
导入所有模块
from spam import * #* 对应模块spam内的__all__属性
模块的使用
模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块
import time,sys print(sys) import time time.sleep(3) import sys print(sys.path) import xxx import sys sys.path.append(r'C:\Users\Administrator\PycharmProjects\python19期\day5\a')
包的使用
包以及包所包含的模块都是用来被导入的,而不是被直接执行的。而环境变量都是以执行文件为准的
导入包实际上就是在导入包下面的__init__.py文件 import sys print(sys.path) import aaa print(aaa.x) print(aaa.y) print(aaa.m1) aaa.m1.f1() aaa.m2.f2() print(aaa.f1) aaa.f1() aaa.f2() import aaa print(aaa.bbb.x) aaa.bbb.m3.f3() print(aaa.f3) aaa.f3()
__init__.py文件
开发规范
本文参考 http://www.cnblogs.com/linhaifeng/articles/6379069.html#_label10