第九课(函数参数局部变量)

呐呐呐......今天来写第九课,局部变量
这是我迄今未止,这是我 最轻松最不需要动脑的一篇博客,之前的搞的我头都要炸了

进入正题:

一:命名关键字参数
1. name=value
2.一但以name=value的传参数的形式存在 ,从他以后都要以这种形式存在(所以我们一般把它放置在后面)

3.当你给某一个变量赋值之后,如:name="张三",后面就不能在给name赋值, 不可以重复赋值

二:关键字参数
关键字参数允许你传入0或者任意个含参数名的参数,这些关键字参数在函数内部将自动组成一个dict(字典)
例如:**kw,我们可以不给他赋值,也可以以name="lisi"的方式进行赋值,还有另一种简化写法就是给所有你即将赋给关键字的值,集合到一起,而后在带入你的函数里

公式:
def show(name,age,**kw):      (当然这个kw是无所谓的,写别的也行)( 这里的**代表的意思是解析)

    print(name,age,kw)
show('lisi',20)

当我们没有给关键字参数赋值时,他不会报错而是返回一个空的集合{}
当我们赋予它一个或多个时

show('lisi',20,hh="hh",ee='ee')
他会返回一个字典 {'hh':'hh','ee':'ee'}

简化写法:
kw={'hh':'hh','ee':'ee'}
show(name,age,**kw)     (但是这种写法不推荐,因为不知道会添加几个值)

三:不定长参数(可变参数):
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple
它的特点就是 自动组装自动解析,通用性强
例:

def cala(*nums):
    sum=0

    for n in nums:
        sum+=n
    return sum

pirnt(cala(2,4,5,9))
他会 逐个调用你所设置的值,输出结果

四:组合参数
这个就简单了,就是把上面说的用到一起

例:
def fu(a,b,*aa,**bb):

    print(a,b,c,aa,bb)
fu(1,2,3,4,5,num=6)

输出的值为:
1  2  (3,4,5)  {'num':6}

值得一提的时 如果我们不写name=value这种形式,那么,当逐个赋值之后,将会出现空的{}

当有参数相同时,将会报错,因为,传参的原则就是,不允许赋重复的值,之前说过,此处加以强调
五:变量的作用域
全局变量与局部变量的作用域不同,他的位置其关键的作用
当我们想要引用函数外部的变量时,需要用到 global,
aa=10
def hh():
如果我们想要引用aa,就需要global
    global aa     (此处的意义时告诉程序我用的是一个全局变量)
    print(aa)
输出 10

当一个函数引用的全局变量和函数内的局部变量同名时,将会报错
 
 

:匿名函数

匿名函数用到的语法是: lambda[参数列表]:函数体内部代码
lam=lambda :print('this is a lambda')
lam( )
     小括号为执行调用
he=lambda x,y:x+y
print(he(9,8))
98会分别赋值给x和y,得出结果 17

add写法
def add(a,b,fun):
    print(fun(a,b))
add(11,22,lambda arg1, arg2: arg1 + arg2)
得出结果为: 33

他的意思是 , 11,22分别赋值给a,b,然后把arg1, arg2: arg1 + arg2附加给fun,执行fun(a,b),
如图:


:三个重要的大数据用到的函数

1. python map()
map()函数接收两个参数,一个是函数,一个是序列,它将序列的每个元素传入函数中执行,并返回结果
例如:
aa=list(map(lambda x:x+1,range(9)))
print(aa)
得到 [1, 2, 3, 4, 5, 6, 7, 8, 9]
2. python filter()
对于序列中的元素进行筛选,最终获取符合条件的序列

例如:
list2= [1, 4, 6, 7, 9, 12, 17]
aa=list(filter(lambda x:x%2==1,list2))
print(aa)
得到 [1, 7, 9, 17]
利用filter(), 可以完成很多有用的功能,例如, 删除 None 或者空字符串

例如:
aa=[None,' ','','ssss','不睡觉','不打盹儿']
tt=list(filter(lambda x:x and len(x.aa())>0,aa))
print(tt)
得到: ['ssss', '不睡觉', '不打盹儿']
3 .python reduce()
他是将第一个数据第二个数据进行操作,得出结果再和第三个数据操作,以此类推, 逐个进行

例如:
li = [11, 22, 33]
aa = reduce(lambda arg1, arg2: arg1 + arg2, li)
print(aa)
得出: 66

:python中自定义排序函数
语法为  sorted()  他可对list进行排序
例如:

aa=sorted([36, 5, 12, 9, 21])
print(aa)
得出: [5, 9, 12, 21, 36]
如果我们想得到一个 倒序只需要再 sorted([36, 5, 12, 9, 21])后面加reverse=True
如:sorted([36, 5, 12, 9, 21], reverse=True)
也可以对字符串进行排序
写到最后才发现我是多么的天真,这一点也不轻松,我收回之前说的话,我的头要炸了,我个人认为,能写全这个的(是指写完一套python的),就三种人,一种是特别热爱,一种是特别勤奋,最后一种就是,变态!变态!变态!( ̄_ ̄|||)

猜你喜欢

转载自blog.csdn.net/why861095769/article/details/80356943