• python基础之函数(自定义函数)


    函数:

    函数的定义:

    初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变量,y是x的函数。自变量x的取值范围叫做这个函数的定义域,编程语言中函数定义:函数是逻辑结构化和过程化的一种编程方法。

    函数的三大优点:

    1.代码重用

    2.保持一致性

    3.可扩展性

    函数的分类:

    (1)、内置函数

    (2)、自定义函数

    接下来说的都是自定义函数相关:

    1、关于如何定义函数:

    def:定义函数的关键字
    test:函数名
    ():内可定义形参
    "":文档描述(非必要,但是强烈建议为你的函数添加描述信息)
    x+=1:泛指代码块或程序处理逻辑
    return:定义返回值

    2、关于函数的参数可分为3种:

    a、定义无参函数:这种函数的执行就是普通语句,不需要外部传来的参数,如果定义的是无参函数的话,调用的时候也是无参数

    b、定义有参函数:需要外部传来的参数,如果定义的是有参函数的话,调用的时候也需要加参数

    c、定义空函数

    定义函数示例:

    def foo(x,y):#括号内的x和y都属于参数(形参)
        #定义一个取x+y的值的函数
        print("from foo")
        res=x+y
        return res #return是返回值
    z=foo(1,2)#括号内的x和y都属于参数(实参)
    print(z)
    

     运行结果是: 

    from foo
    3
    

    3、关于return返回值(无参函数不需要返回值,有参函数需要返回值)

    函数和过程:

    过程定义:过程就是简单特殊没有返回值的函数,没有返回值就是过程

    a、不写return的话,返回值就是none

    b、写return一个值的话,就返回一个值

    c、写return多个值的话(这些值可以是任意数据类型),就返回多个值,以元组的方式呈现

    示例1:

    def foo(x,y):
        return 1,2,3,[4,5],{"a":2}
    res=foo(1,2)
    print(res)
    

    运行结果是:(以元组的方式呈现)

    (1, 2, 3, [4, 5], {'a': 2})
    

    示例2:

    def foo(x,y):
        return 1,2,3
    a,b,c=foo(4,5)
    print(a)
    print(b)
    print(c)
    

    运行结果是:

    1
    2
    3
    

    4、关于函数的参数:

    a、定义:定义时,括号里写的就是形式参数     >>>>>>   即形参,形参就是变量名

    b、调用:函数调用时,括号里写的就是实际参数   >>>>>  即实参,实参就是变量值,实参可以是变量的形式

    def foo(x,y):#x和y表示的是形参
        print(x)
        print(y)
    
    foo(1,2)#1和2表示的是实参  

    区别:形参是虚拟的,不占用内存空间,.形参变量只有在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参

    注意:写函数的时候,传值最好不要传可变的数据类型,容易影响全局

    示例1:

    def foo(x,y):
        print(x)
        print(y)
        
    a=11
    b=22
    foo(a,b)
    

    运行结果是:  

    11
    22
    

    示例2:

    def foo(x,y):
        print(x)
        print(y)
    
    x=[1,2,3]
    y=22
    foo(x,y)
    

    运行结果是:

    [1, 2, 3]
    22
    

    5、关于形参和实参:

    (1)、关于实参的传值需要注意三点:

    a、按照位置传值

    b、按照关键字传值

    c、位置传值和关键字传值两者结合使用(需要注意:1、位置传值必须要在关键字传值的前面;2、对于一个形参,只能赋值一次)

    位置传值示例:

    def foo(x,y):#x和y表示的是形参
        print(x)
        print(y)
    
    foo(1,2)#1和2表示的是实参
    

     执行结果:

    1
    2
    

     关键字传值示例:

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

      执行结果是:

    2
    1
    

     位置传值和关键字传值两者结合使用示例:

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

      执行结果是:

    1
    2 

    (2)、关于形参:

    a、形参位置参数(必须传值的参数,少一个都不行)

    b、形参的默认参数(调用时不需传值)

    经常变换的可用位置参数,常用的可用默认参数

    注意:多参数时,默认参数必须放到位置参数的后面

    c、*args

    d、**kwargs

    形参的位置参数示例:

    def foo(x,y,z,):
        print(x)
        print(y)
        print(z)
    
    foo(1,2,3)#必须给上面的形参x y z每一个传值
    

     执行结果:

    1
    2
    3
    

     形参的默认参数示例:

    def foo(x,y,z=3,):
        print(x)
        print(y)
        print(z)
    
    foo(1,2)#不需要给默认参数z传值
    

     执行结果是:

    1
    2
    3
    

      

     

     

      

     

     

      

      

  • 相关阅读:
    修改python的pip下载源
    MySQL_Sql_打怪升级_进阶篇_进阶12: DDL常见数据类型
    【Xshell】SFTP子系统申请已拒绝,请确保SSH连接的SFTP子系统设置有效
    MySQL_Sql_打怪升级_进阶篇_进阶11: DDL数据定义语言
    MySQL_Sql_打怪升级_进阶篇_进阶10: DML数据操纵语言
    MySQL_Sql_打怪升级_进阶篇_进阶9:联合查询
    MySQL_Sql_打怪升级_进阶篇_ 进阶8:分页查询
    MySQL_Sql_打怪升级_进阶篇_进阶7:子查询
    MySQL_Sql_打怪升级_进阶篇_进阶6:连接查询
    Ubuntu出现E: Failed to fetch
  • 原文地址:https://www.cnblogs.com/xuyuanyuan123/p/6674156.html
Copyright © 2020-2023  润新知