美文网首页
Python(三) 函数

Python(三) 函数

作者: 晓看云 | 来源:发表于2019-05-20 16:06 被阅读0次

    目录 

    1.函数

    2.函数的定义规则

    3.无参参数

    4.有参参数

    5.函数返回值

    6.Pass&文档字符串

    7.函数

    8.lambda函数

    9.常用函数

    10.

    一、函数

        1、函数:重用的程序段,允许给一块语句一个名称

        2、调用函数:在程序的任何地方使用这个名称,任意多次运行这个语句块

        3、内建函数:例如len和range

        4、通过改变函数的参数,可以最大程度的复用代码

    二、函数的定义规则

        1、 def: 函数代码块以def关键字开头,后接函数表示符名和圆括号( );

        2、形参&实参:任何传入实参和形参必须放在圆括号中,圆括号中写的是形参;

        3、首行:函数的第一行语句可以选择性地使用文档字符串--用于存放函数说明;

        4、函数内容以冒号起始,并且函数体要有缩进;

        5、return[expression]结束函数,选择性返回一个值给调用者.不带表达式的return相当于返回None;

    三、无参参数:无传入函数

       def sayHello( ):

            print 'Hello World!'

        sayHello( )

    四、有参函数

        Python中的调用函数,使用的形参分如下几类:

        必备参数、命名参数、缺省参数、不定长参数

    1.必备参数

    (1)传递指定个数的必备参数

     f:def info(name,age,tel):

             print "name:"+name+",age:"+str(age)+",tel:"+tel

         info('jack',20,'13567867878')

    (2)传不可变对象

    一切皆对象,这里说的不可变对象指那些不可改变的数据类型,比如字符串、数字等.

    (3)传可变对象

        Python传参相当于传值和传引用的一种综合.

         如果函数收到的是一个可变对象(比如字典或者列表)的参数,这个时候就是通过传"引用"来传递的参数。(其实,这种归根结底传的也是值,只不过是指向内存空间地址的值)

         如果函数收到的是一个不可变对象(比如数字、字符或者元组)的参数,这个时候就是通过"传值"来传递度对象,如果想改变原变量的值。可以将这些变量申明为全局变量。

        默认参数,必须指向不变对象。

        默认参数,函数应该检查参数类型

    2.命名参数

        传参时命名参数必须在非命名参数的后面,否则就会报SyntaxError:non-keyword arg after keyword arg的错误。

    3.缺省参数

        注意默认值必须要放到没有默认值参数的最后面,否则会报错。这因为赋给形参的值是根据位置而赋值的。

        某个函数有许多参数,其中也有多个默认参数值,而你只想指定其中的一部分,那么可通过命名来为这些参数赋值,此方式被称为关键参数赋值,使用名字进行赋值,而不是位置进行赋值。

    4.不定长参数

    五.函数返回值

    1.函数返回值

        函数完成计算后,可以返回一个值或一个对象,函数执行完毕也没有return语句时,自动 return None.

    2.函数返回多个值

    Def func(a,b):

        Return a,b

    Print func(10,20)

    六.Pass&文档字符串

    1.Pass

        在函数或者类中,使用Pass语句,表示一个空的语句块,仅作为占位,执行后并没有任何效果,可以用于定义待开发的函数和类。

        Def someFunction( ):

                    pass

    2.文档字符串

        DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。

    七.函数

    1.raw_input和input函数的区别

        Input( )支持用户输入数字或者表达式,不支持输入字符串.返回的是数字类型的数值。而raw_input( )捕获的是最原始的输入,也就是返回的是一个字符串。

    2.使用元组作为函数的参数

    3.使用字典作为函数的参数

    4.同时使用*和**的函数参数

    八、lambda函数 匿名函数

    (1)lambda语句被用来创建新的函数对象,并且在运行时返回它们。

    (2)Python使用lambda关键字来创建匿名函数。这种函数得名于省略了用def声明函数的标准步骤

    (3)lambda只是一个表达式,函数体比def简单的多。

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

    (5)lambda函数拥有自己的名字空间,且不能访问自由参数列表之外全局名字空间里的参数。

    (6)虽然lambda函数看起来只能写一行,却不等于C或C++的内联函数,后者额目的是调用函数时不占用栈内存从而增加运行效率

    (7)像if或for或print等语句不能用于lambda中

    (8)lambda函数不能共享给别的程序调用,def定义的函数可以

    Demo

        g=lambda x:x+1        def g(x):

                                                 Return x+1

        Print g(1)

        Print g(2)

    九、常用函数

    1.repr函数

    repr函数用来取得对象的规范字符串表示。反引号(也成转换符)可以

    按值传递,不可变元素

    2.type函数 求证变量类型

    3.map函数

    将每个列表或者字符串都执行某个函数

    Map无法处理seq长度不一致,对应位置操作数类型不一致的情况,这两种情况都会报类型错误。

    4.fiter函数

    Fiter( )函数可以对序列做过滤处理,就是说可以使用一个自动的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤。最终一次性返回过滤后的结果。

    5.reduce函数

    6.递归打印Fibonacci函数

    7.Exec( )和eval( )的区别?

    Exec( ) 有时可能会需要动态地创造Python代码,然后将其作为语句或作为表达式去执行。

    exec语句用来执行存储在字符串或者文本中有效的Python语句。

    Eval( )用来计算存储在字符串中的有效Python表达式,并返回计算结果。

    Exec( )和eval( )都可以动态的执行存储在字符串或文本中的有效的Python语句没有返回值,而eval有返回值

    7.range和xrange的区别?

    range会直接生成一个list对象

    xrange则不会直接生成一个list,而是每次调用返回其中的一个值[xrange返回的是一个生成器]

    十.重载&函数引用

       1.Python函数为何没有重载?

    (1)可变参数类型

    (2)可变参数个数

        当两个函数除了参数类型和参数个数不同之外,其功能是完全相同的,此时才使用函数重载。如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。

    情况一:函数功能相同,但是参数类型不同,Python如何处理?

        Python接受任何类型的函数,如果函数的功能相同,那么不同的参数类型在python中很可能是相同的代码,没有必要做成两个不同的函数。所以,根本不需要处理。

    情况二:函数功能相同,但是参数个数不同,Python如何处理?

        缺省函数,对于缺少的参数设为缺省函数即可解决问题。

    完成相同的功能。注意,在大多数时候有eval(repr(object))==object

    2.函数的引用?

    Demo1:引用函数

    a =abs

    Print a(-1)

    Demo2:函数参数可以是函数

    Def func(f):

        Print f(-1)

    Func(abs)

    相关文章

      网友评论

          本文标题:Python(三) 函数

          本文链接:https://www.haomeiwen.com/subject/ctikzqtx.html