匿名函数
匿名函数即没有绑定名字的函数,没有绑定名字,意味着只能用一次就会被回收
所以说匿名函数的应用场景就是:某个功能只用一次就结束了
定义方式 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