• python函数


    函数的定义

    使用def语句,在依次写出函数名、括号、括号中的参数、冒号、函数体。如果函数需要返回值使用return语句返回。

    def my_abs(x):
        if x >=0:
            return x
        else:
            return -x
    
    print(my_abs(-2))#调用这个函数,-2为传递的参数
    

     函数体内部执行时,遇到return 函数就执行完毕,并将结果返回。如果没有return语句,函数执行完毕也返回结果,只是这个结果是None。

    def fun1(x,y):
        if x > 0 and y > 0:
            return x + y;
            print(x)
            print(y)
    print(fun1(1,5))
    

     

    只显示了return 的结果。x,y的值并没有打印。说明执行完return之后,就不再执行后面的代码了。

    def fun1(x,y):
        if x > 0 and y > 0:
            x + y;
        
    print(fun1(1,5))
    

     

    没有return 也会返回一个none.

    多个返回值

    Python 可以返回多个值,多种类型的值。

    def test():
        print('in the test')
        return 1,'hello',['hello','world'],{'name':'xiaoming'},(1,2,3)
    print(test())#(1, 'hello', ['hello', 'world'], {'name': 'xiaoming'}, (1, 2, 3))
    

     其实返回的是一个元组 ,元组中的每一项和定义的位置一致。如果返回的值只有一个,括号省略了。

    函数的参数

    如果定义了一个函数并设置了两个参数,调用的时候就要传值给函数,没传会报一个错误。

    def test(x,y):
        print(x)
        print(y)
    print(test())
    

     

    当然也可以给这两个参数设置一个默认值。这个时候可以不用传参数。

    def test(x=1,y=2):
        print(x)
        print(y)
    print(test())
    

     

    如果传递的参数大于设置的参数,那么也会报错。因为他们的位置是一一对应的。所以个数也必须一致。

    def test(x=1,y=2):
        print(x)
        print(y)
    print(test(3,5,7))
    

     

    传递参数的时候也可以指定参数的值。这种叫关键字参数。

    def test(x=1,y=2):
        print(x)
        print(y)
    x = 2
    y = 4
    print(test(y=y,x=x))
    

     

    关键字参数和位置参数的混用

    def test(x,y,z):
        print(x)
        print(y)
        print(z)
    print(test(3,z=2,y=5))
    

     关键字参数不能写在位置参数前面,因为有位置参数会按照位置参数的方式去匹配形参。

     参数组

     如果要传递的参数不固定,可以用变量组的方式。

    定义一个变量组,形参的变量名格式为*变量名。会把多个实参放到一个元组里面。

    def test(*args):
        print(args)
    test(1,2,3,4,5,6)#(1, 2, 3, 4, 5, 6)
    

     也可以传一个列表过去。一样会把这个列表转成元组。

    test(*[1,2,3,4])#(1, 2, 3, 4)
    

     如果已知一个参数,其它参数不固定,可以把不确定的参数做为一个参数组。

    def test1(x,*args):
        print(x)
        print(args)
    test1(1,2,3,4,5)
    

     

    以上只能接收位置参数或者列表,不能接收关键字参数。

    传递字典

    把N个关键字参数,转换成字典的方式

    def test(**kwargs):
        print(kwargs)
    test(name='alex',age=28)#{'name': 'alex', 'age': 28}
    

     如果要传字典 形参的定义必须是**,形参名一般都是kwargs。

    也可以直接传一个字典过去。字典之前要加**。

    test(**{'name':'alex','age':28})#{'name': 'alex', 'age': 28}
    

     取值用[key]:

    def test(**kwargs):
        print(kwargs)
        print(kwargs['name'])
        print(kwargs['age'])
    test(**{'name':'alex','age':28})
    

    几种参数组合使用

    def test(name,age=18,*args,**kwargs):
        print(name)
        print(age)
        print(args)
        print(kwargs)
    test('xiaoming',age=34,sex='m',hobby='xuexi')
    

     

    参数传递过程如下:

     1、首先name 传了一个位置参数。

     2、age 传了一个关键字参数,因为age有默认值就算不传也可以的。

    3、sex、hobby 这两个参数为关键字参数,而*arge并不能接收关键字参数,所以这些参数传给了**kwargs。

  • 相关阅读:
    【转】Odoo开发之:工作流 workflow
    【转】Odoo:基本字段类型
    【转】odoo 10的企业微信发送程序介绍
    Installing python-ldap in Ubuntu
    Odoo8中安装新模块找不到的问题
    mybatis缓存
    ThreadPoolExecutor线程池进阶使用
    使用Dubbo实现RPC调用
    java静态代理模式
    java四种线程池
  • 原文地址:https://www.cnblogs.com/qing-chen/p/7219562.html
Copyright © 2020-2023  润新知