python-函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提供应用的模块性和代码的重用性,python内置了很多函数(例如:print()等),用户也可以自定义函数,通过def关键字来定义一个函数可以选择性的传入参数在函数内部进行处理,以return来返回一个值给调用者,如果没有return返回值默认为None,函数的定义语法为:

def 函数名([参数]):

    代码块

    return 返回值

def a (s):

print(s)

a(10)

10

创建一个a函数,调用之后把10作为函数传给函数,执行后会打印出一个10

函数返回值的调用:将1作为参数传给函数,用变量b接收函数的返回值,执行结果为1是因为函数中的print方法打印出的结果,b的实际值是10

>>> def a (s):

print (s)

return 10

>>> b = a(1)

1

>>> print (b)

10

装包与解包:很多时候我们可能不知道要传几个参数给函数,在定义函数的时候可以在参数的位置的写一个'*args'来表示这是一个不定长参数,例如:

def a (*args):                #参数这里写'*args',调用的时候传了3个数字

print(args)

>>> a(1,2,3)

1 2 3

当我们在参数的位置写'*kargs'的时候则以键值对的形式返回,例如:

def a(**kwargs):

print(kwargs)

>>> a(a=1,b=2,c =3)

{'a': 1, 'b': 2, 'c': 3}

python中的高级函数:1.接收一个或多个函数作为参数    2.将函数作为返回值返回(闭包),满足任意一个特点就是高级函数,例如:

def a(i,j):

print(i(j))

def b(s):

s += 1

return s

>>> a(b,1)

2


上述的代码为定义了一个a()函数,需要接收i和j两个参数,其中i为一个方法,打印出j作为参数穿给i函数运算的结果,b()函数讲传进来的参数加1然后返回,将b和1作为参数传给a函数处理,执行结果相当于print(b(1))

def a(i):

i += 1

def b():

    j = i + 1

    return j

return b

>>> c = a(1)

>>> print(c())

3

上述代码为将函数作为返回值的用法,先定义函数a()接收参数i先做加1运算,然后在函数内部定义一个函数b(),再将i做加1运算并赋值给j(因为函数b是a的内部函数所以可以不用接收参数直接调用a函数的参数),b函数返回j,a函数返回b函数的运算结果,也就是返回了j,在打印结果的时候要注意用一个变量接收函数的运算结果并加()如果不加的话是打印这个函数在内存中的地址

匿名函数:一些简单的运算函数可以试用匿名函数的方式来完成,通过lambda关键字来定义,lambda 参数:运算,例如:

>>> def a (i,j):

return i+j

>>> a(1,2)

3

>>> f = lambda a,b:a+b

>>> f(1,2)

3

装饰器:本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,动态的为函数增加一些功能,装饰器的返回值也是一个函数对象,例如:

def start_end(func):

    def new(*args,**kwargs):

    print('开始执行.....')

    result = func(*args,**kwargs)

    print(result)

    print('执行结束.....')

    return result

    return new

def a(i,j):

s = i +j

return s

>>> f = start_end(a)

>>> r = f(1,2)

开始执行.....

3

执行结束.....

如果你觉得太麻烦的话也可以用这种简单的方式,用@的方式来装饰需要动态增加功能的函数:

>>> def start_end(func):

def new(*args,**kwargs):

print ('开始执行.....')

result = func(*args,**kwargs)

print(result)

print('执行结束.....')

return result

return new

>>> @start_end

def a(i,j):

s = i + j

return s

>>> a(1,2)

开始执行.....

3

执行结束.....

------已更新完,后面可能会有补充,下一篇更新面向对象------

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、函数 1.函数概述 1.1认识函数 需求:求圆的面积s = π * r ** 2c = math.sqrt(a...
    hollow_02f9阅读 752评论 0 2
  • 为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数 一、定义函数 ~~~ d...
    rookieyu阅读 815评论 0 0
  • 高阶python 函数式编程 - 函数式 函数式编程(FunctionalProgramming) - 基于lam...
    July_whj阅读 518评论 0 1
  • 什么时候才能经历一场真正的风雨兼程。我独自走在孤独的路上,有风有雨,有灯有月,有梦有星光。 也许人总要经历过才会长...
    宁檬之阅读 335评论 1 3