python-06

xiaoxiao2021-02-28  32

参数 默认参数:参数有默认值,如果不传参则使用默认值 必需参数:须以正确的顺序传入函数。调用时的数量必须和声明时的一样。 可变参数: 1:最好写在最后,因为它将从它开始直到最后的所有元素组成一个元组 2:可以传递一个元组或列表,但是它将此元组或列表组成元组的第一个元素 3:可以在传参时加一个*,此时是将元组或列表中的元素取出来,传递给args,args将所有元素组成元祖 def test(a,b,c=0,*args):     print(args)     for i in args:         for j in i:             print(j)     print(a,b,c) tuples=['a','b','c'] test(1,2,33,*tuples) 结果: ('a', 'b', 'c') a b c 1 2 33 关键字参数: 1:只接收键值对的形式 2:以  参数=值  的形式传参 3:如果值是一个字典,传参时加上** def testkw(a,b,**kw):     print(kw)     print(a,b) dicts={'c':3,'d':4} testkw(1,2,**dicts) 结果: {'c': 3, 'd': 4} 1 2 变量的作用域 当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。 如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了。 a,b=1,2 def test():     global a     #表示在此函数中使用全局变量,如果没有此声明,下面的变量a就是局部变量     a=10     print(a,b) def test2():     print(a) #调用函数:局部变量优先 test() test2() 结果: 10 2 10 匿名函数 python 使用 lambda 来创建匿名函数。 所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。 1:lambda 只是一个表达式,函数体比 def 简单很多。 2:lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。 3:lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。 4:虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。 sum=lambda arg1,arg2:arg1+arg2; print(sum(10,20)) #lambda表达式作为参数传递 def add(a,b,fun):     print(fun(a,b)) add(11,22,lambda arg1,arg2:arg1+arg2) 结果: 30 33 filter(函数,可迭代的对象)表示如果if:过滤函数,满足lambda的条件即可返回,可强制转换成列表 map(函数,可迭代的对象):返回lambda后面表达式的值 foo=[2,15,48,65,94] print(list(filter(lambda x:x%3==0,foo))) print(list(map(lambda x:x*2+10,foo))) from functools import reduce print(reduce(lambda x,y:x+y,foo)) 结果: [15, 48] [14, 40, 106, 140, 198] 224 上面filter例子可以写成:print([x for x in foo if x%3==0]) 上面map例子可以写成:print([x*2+10 for x in foo]) 例子: 1-10每个数的平方:print([x**2 for x in range(1,11)]) 1-100的偶数:print([x for x in range(1,101) if x%2==0])
转载请注明原文地址: https://www.6miu.com/read-2150121.html

最新回复(0)