Python笔记(2)函数

python中一切皆对象,函数也看做对象。

常用的几个内建函数Map,Reduce,Filter,lamda。

Filter

筛选出满足过滤条件的元素

s = "@431$%$314&6i7(431)^&^%2l#%^i6861642k765e&$%65%^$^#$p%^&*%66757y%*^&%th%*&^%&^$o$&*^n4637"
print filter(str.isalpha,s)

Map

  接收两个参数,第一个是函数,第二个是list,返回结果

l = [random.randint(0,100) for i in range(10)]

def sub50(a):
    return a-50

print map(sub50,l)

Reduce

和map一样接收两个参数,但是他返回一个结果,会迭代第二个参数list,不停的计算。

# 1+2+3+...+99
def f_add(a,b):
    return a+b
print reduce(f_add,range(1,100))

  python3中Reduce被从全局命名空间中移除,要想使用需要--from functools import reduce,在函数式中reduce所表达的概念称为规约fold。

这里的map reduce和大数据中的map reduce不是一回事。

Lambda

lambda就是一个匿名函数,在需要一个函数,但是不用费力起名字的时候用lambda.

map(lambda x:x*x, [x for x in range(10)])
##等价于
def pf(x):
    return x * x

map(pf, [x for x in range(10)])

map,filter,reduce并没有列表解析容易理解,3里面返回的是一个iterator而不再是一个list。

回调 CallBack 也即函数作为参数,运行到callback()返回上一层

闭包closure

绑定外部变量的函数

闭包和装饰器 都是函数作为返回值

def pow_x(x):
    def echo(value):
        return value**x
    return echo

lst = [pow_x(2),pow_x(3),pow_x(4)]
for p in lst:
    print "closure",p(2)

1.嵌套函数

2.内部函数用了外部变量

3.外部函数返回了内部函数

如果外部变量是list,是可以改变的。但是只是一个变量,是无法改变的。

函数内部要注意LEGB原则,有局部变量的时候,就不再调用外部变量。

装饰器decorator

装饰就是在原有函数的基础上,加一些其他的功能,他是函数作为返回值,函数作为参数的一种应用。

多层嵌套就是用了闭包,被修饰函数作为绑定量。

两层嵌套结构

目标函数可以带参数

def time_cost(f):
    def _f(*arg, **kwarg):
        start = time.clock()
        a=f(*arg,**kwarg)
        end = time.clock()
        print f.__name__,"run cost time is ",end-start
        return a
    return _f

@time_cost
def list_comp(length):
    return [(x,y) for x in range(length) for y in range(length) if x*y > 25]

if __name__ == ‘__main__‘:
    list_comp(1000)

  

三层嵌套结构

不仅目标函数可以带参数,装饰器也可以带参数

递归

递归就是1)函数自己调用自己2)有明确的出口。常用于Fibonacci数列,树图的遍历等数据或是结构上定义为递归的情况。递归和循环是等价的。

递归的次数过多,会造成栈溢出,并且Python并不支持尾递归优化。

#字符串取反
def reverse_str(s):
    if len(s) <= 1:
        return s
    else:
        return reverse_str(s[1:]) + s[0]

  

时间: 2024-10-26 20:59:16

Python笔记(2)函数的相关文章

python笔记4 - 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数. 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 函数的第一行语句可以选择性地使用文档字符串-用于存放函数说明. 函数

python笔记--自定义函数

函数 函数是把一些负载的代码封装起来,需要的时候直接调用,重复利用提高效率并且能够简化程序的结构. 1.语法 定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数.冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. def functionName(parms1, parms2, ...):     code block     return expression 2.函数的定义与调用 #定义函数 >>> def func1():         pri

[python 笔记3]函数(方法?)

1.定义 python函数以关键字def标识 def test(name): print 'hello %s'%(name) name=raw_input('please input your name: ') test(name) PS:在python中代码块以缩紧的方式进行标识,所以缩进对齐的语句为一个代码块,这比像C++\java使用{}进行标识的方法方便不少,但是也对一些代码对齐不规范的同学带来一些麻烦 def 函数名(参数列表): 函数体 2.参数列表 python在函数中的参数与C+

MIT公开课:计算机科学及编程导论 Python 笔记4 函数分解抽象与递归

Lecture4:Decomposition and abstraction through functions:introduction to recursion 函数分解抽象与递归 Functions 函数 block up into modules 分解为模块 suppress detail 忽略细节 create "new primitives" 创建原语的思考方式 w3school Python函数 #example code for finding square roots

python笔记-lambda函数、sorted函数、map函数

1.lambda函数:又称匿名函数,示例如下: def f(x): return x**2 print f(4)  #16 g = lambda x:x**2 print g(4)  #16 2.map函数 print map(lambda x:x**2,range(10)) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 3.sorted函数 dict = {9:2,4:3,6:9,'a':'test','e':'fff','*':'$'} print sorted

python笔记006——函数

函数基础 计算字符串中某字符个数 1 def countsubstring(s,ch): #s和ch为形参 2 c=0 3 i=0 4 while i<len(s): 5 if s[i]==ch: 6 c +=1 7 i +=1 8 print(c) 9 str='wujiadongjiangruisuirsuiuigjsjsiuisldjsjeuiui' 10 m=‘i’ 11 countsubstring(s,m) #调用函数传入的参数str和m为实参 计算子串sub个数 1 def cou

python笔记三 函数

函数  11/1 函数:是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名就可以了. def   sayhi(): 函数名 print("hello , i'm  hequan") sayhi()  #调用 函数的返回值 def calc(x,y): res = x**y return  res  #返回函数执行结果 默认返回 None 11/2 参数 def  mail(形式参数): ret = mail(实际参数) if  ret: print(

python笔记04函数

加了星号(*)的变量args会存放所有未命名的变量参数,args为元组:而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典. >>> def fun(a, b, *args, **kwargs): ... """可变参数演示示例""" ... print "a =", a ... print "b =", b ... print "ar

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

Python笔记:替代case语句的字典和匿名函数(lambda)

在linux的shell中我们习惯使用case语句来做分支处理,然而Python中却省略了这个函数,经过多方查找,发现其实case语句在C语言中是通过查对应的hash表,来进行跳转的.在Python中我们可以通过三种方法来实现这种功能.1.字典:2.lambda:3.switch类. 1.字典 dictCase={'case1':func1,'case2':func2....'caseN':funcN} #注意字典中对应的是函数名,不要圆括号. 在调用的时候使用字典的get函数来实现defaul