我们这周就来学习
函数进阶
目录
我们首先要搞懂
全局变量和局部变量
函数以外的变量b和函数以内的变量b不是一回事
函数外的b就是全局变量,函数里面的b是局部变量
这个应该是很好理解
修改全局变量
要想在函数内修改外面的变量
就要用到
global
a = 200
def funa():
global a
a = 150
print(a)
funa()
这样子修改之后a就从原本的200变成了150
nonlocal
是针对函数嵌套的情况下进行修改
若你想在子集作用域里面修改父级作用域的话,用这个就很合适
def funa():
a = 100
def funb():
nonlocal a
a = 150
retuen a
print(funa())
匿名函数
lambda
一般是这么用:自定义函数名 = lambda 参数:返回值
add = lambda x,y:x+y
print(add(3,7))
优点也很明显,就是比命名函数之后再编写程序快捷的多
内置函数
这个就是python自带的一堆函数
像我们经常用的print,int,input,def等都是python自带的函数
用 print(dic(builtins))就可以看到我们当前的内置函数了
这里再介绍几个新的函数
zip
就是将多个可迭代对象一一对应,打包成元组格式返回
a = [1,2,3]
b = ["a","b","c"]
print(list(zip(a,b)))
输出来的就是一个元组格式的元组啦
map
就是将可迭代对象中的元素和函数对应执行这个函数并拿到值
li = [1,2,3,4,5]
def funa(x):
return x*x
print(list(map(funa,li)))
[1, 4, 9, 16, 25]
最后的结果就是最下面的代码啦
reduce
就是将对象拿出来在函数里面进行运算
from functools import reduce
li = [1,2,3,4,5,6]
def funa(x,y):
return x+y
print(return(funa,li))
eval
就是自动识别是什么数字类型,然后直接转换,很方便的一个函数
li = "[1,2,3]"
print(type(eval(li)))
print("1+2")
print(eval("1+2"))
好啦,这周的学习就到这里,下周我们讲装包和拆包