码迷,mamicode.com
首页 > 编程语言 > 详细

Python 函数

时间:2018-06-29 14:07:58      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:fun   list   oba   python   local   多个   cal   function   lte   

1.  匿名函数

  ①.使用lambda来创建函数

  

  ②所谓匿名,即不在使用def这样的形式定义一个函数

  

  ③lambda只是一个表达式,函数体比def简单很多

  

  ④lambda的 主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去

  

  ⑤lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间的参数

  

  ⑥虽然lambda函数看起来只能写一行,却跟c或c++的内联函数不同,后者的作用是调用小函数时不占用栈内存,从而增加运行效率

 

 

a = lambda x:x.upper()
x = ff
print(a(x))

print(‘‘.join(list(map(lambda x:x.upper(),x))))

 

FF
FF

 

 

2.  global  和  nonlocal

# 内部作用域修改全局作用域变量
num = 1
def fun():
    # 调用全局变量
    global  num   
    print(num)
    # 修改全局变量
    num =12
    print(num)
fun()
1
12

 

 

# 修改嵌套作用域(非全局作用域)中变量时使用nonlocal
def num():
    name = sb
    print(name)
    def num_1():
        nonlocal  name
        name = xx
        print(name)
    num_1()
    print(name)
num()
sb
xx
xx

 

 

3.  map()函数

    格式:  map(func, seq1[seq2,......])

  第一个参数接收一个函数名,后面的参数接收一个或多个可迭代的序列,返回的是一个集合   (Python3 返回可迭代对象)

  map()函数将func作用于seq中的每一个元素,并将所有调用的结果作为一个list返回

  如果func为None,作用同zip().

 

list_1 = [1,2,3]
set_2 ={1,2,3}
dict_3 = {name:1,age:2,sex:3}
print(list(map(lambda x, y, z:x * y * z,list_1,set_2,dict_3)))
[name, ageageageage, sexsexsexsexsexsexsexsexsex]

 

 

4.  filter()函数

  格式:  filter(function, iterable)

  filter()函数用于锅过滤序列,过滤掉不符合条件的元素,返回由符合元素组成的新列表

  序列的每个元素作为参数传递给函数进行判断,然后返回True 或 False

  最后将返回True的元素放到新列表中

  iterable 是一个可迭代对象(例如:一个列表)

 

 

list_1 = [1,2,3]
set_2 ={1,2,3}
print(list(filter(lambda x:x >2,list_1)))
print(set(filter(lambda x:x >2,set_2)))

 

[3]
{3}

 

 

 

5.  reduce()函数

  格式:  reduce(function, iterable[, initializer])

  initializer---可选,初始参数

  reduce()函数会对参数序列中元素进行积累

  从左到右对一个序列的项累计地应用有两个参数的函数,以此合并序列到一个单一值

  如果提供了initializer参数,计算时它将被放在序列的所有项前面

  如果序列是空的,它也就是默认的结果值了

list_1 = [1,2,3,4]
from functools import reduce
print(reduce(lambda x,y:x+y,list_1,10))
20

 

  

 

Python 函数

标签:fun   list   oba   python   local   多个   cal   function   lte   

原文地址:https://www.cnblogs.com/cyx-12/p/9241769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!