Python函数

来源:互联网 发布:灯具品牌 知乎 编辑:程序博客网 时间:2024/06/16 10:35

Python语言中的函数就是指的就是 Java 语言中的方法

一,调用函数

1,调用函数需要知道函数的名字和函数所需要的参数,如果知道函数名但不知道作用可以查看官方文档或者使用交互命令行 help(方法名) 获取方法的作用

2,调用函数时候给函数传递的参数必须符合函数规定的参数数量和参数类型,如果不符合规定则会报 TypeError 错误

3,函数名其实就是指向函数对象的引用,所以函数名其实是可以赋值给新的变量,那么这个变量就会有跟这个函数相同的功能,如 a = abs(),a() 就会有获取参数绝对值的功能


二,定义函数

1,定义函数:定义函数时需要使用 def 语句,依次写出 def ,函数名,括号,冒号(:);括号内填写函数要接受的参数,如果接受多个参数在需要用逗号隔开,函数返回的数值用 return 返回,如:

    def my_function(x) :

        return x + 1

2,函数返回:函数运算遇到 return 时会返回数据并且不会再继续往下运行,如果函数内没有 return ,那么函数会运行到最后并返回 None,return None 可以缩写为 return

3,空函数:如果函数内不需要执行任何代码的话就写一个 pass ,如果定义了函数但不知道内部怎么实现就可以先使用 pass 进行占位

4,函数参数:当函数接收到的参数数量或者参数类型不服个函数规则时会报 TypeError 错误,定义函数时可以先使用 isinstance() 方法检测所接收到的参数类型是否符合规则

    def my_function(x) :

        if not isinstance(x , (int ,float)) :

            raise TypeError("必须传递int或者float类型数据")

        return x + 1

5,函数返回多个值:函数内可以返回多个值,如有个 function 方法需要同时返回 x 和 y ; 那么就可以写为 return x , y ;接受函数返回的数据时可以使用一个变量接受,那么接收到的时将会是 tuple,也可以如下接受 a , b = function() ;这样 a 和 b 会分别接收到函数返回的俩个返回值


三,函数的参数

定义函数的参数时,需要将变化大的参数设置到前面,变化小的参数设置到后面

1,位置参数:普通参数,必须传递

2,默认参数:默认设置好的参数,可以不用传递,默认参数必须指向不可变对象,创建方式:

        def   function( x , y = 2 , z = 3 ) :

    调用的时候可以指数如只输入一个参数,y 默认为2;定义函数时位置参数必须在前面。默认参数在后面,否则会报错

    调用时填写默认参数可以顺序填写,如 function(1 ,2) 或者 function(1 , 2 , 3),也可以跳过 y  设置 z,如 function(1 , z = 3)

3,可变参数:可以接受的参数个数时可变的;方法内会将传递的参数转换为 tuple 进行调用; 创建方式:

        def   function(*args):

    调用:function(1 , 2 , 3) ;可变参数也可以直接接受集合或者元组数据,如 list = [1 , 2 , 3],function(*list) ;

4,关键字参数:可以接受的参数也是可以改变的,但是传递的参数必须时以键值对的方式传递,方法内部会将参数转换为 dict 进行调用;创建方式:

        def   function(**kw) :

    调用:function("city" = "北京" , "年龄" = 20);关键字参数可以直接接受 dict 数据,如 dict = { "city" : "北京" , "年龄" : 20 },function(**dict);

5,命名关键字参数:类似与关键字参数,但可以先限制关键字的名字,也就是限制键值对中键;创建方法:

        def   function(* , city ,name) :

    调用时候只会接受键为 city 和 name 的参数,当然也可以不传或者少传;

    定义命名关键字参数时前面务必要加 * , 然后再写关键字的名字,但如果前面有了可变参数,那么就可以不用再加 * 了,如 def   function(x , *args , city , name)


四,递归函数

递归函数就是函数内再次调用自己,这样的调用需要配置好结束语句,不然容易形成死递归。

每次递归的的返回结果最好时明确的结果,不要不断的嵌套调用自身,不然嵌套的多了会容易造成内存溢出。

递归不能过多次,不然也会容易造成内存溢出。

原创粉丝点击