zoukankan      html  css  js  c++  java
  • 函数

    一.函数简介

    函数必须先声明再调用(函数名+括号)。

    函数包括四部分

           1. 函数名:使用该函数的依据 (函数名的命名规则跟变量名一模一样)

           2. 函数体:完成功能的代码块(函数体代码定义截断只检测语法 不执行代码)

           3. 返回值:功能完成的反馈结果

           4. 参数:完成功能需要的条件信息

    def my_max(x,y) :
        if x > y :
            return x
        else :return y
    
    
    print(my_max(my_max(3,2),1))
    View Code

    二.函数返回值

    不写return ,只写return和return None时返回值都为None

    def my_print (l):
        print(l)
    
    res = my_print("adafFDASFCAa")
    print(res)
    View Code

    return 返回单个值:这个值可以是python任意数据类型

    def my_print (l):
    
        return {
            "1" : "stevin"
        }
    
    res = my_print("adafFDASFCAa")
    print(res)
    View Code

    return 返回多个值:return会自动将多个值以元组的形式返回给调用者(函数不喜欢自己的返回的结果被修改)

    def my_print ():
        return {'name':'jason'},{'username':'tank'},{'user_name':'egon'}
    
    res = my_print()
    print(res)
    View Code

             返回多个值 如果不想返回元祖  可以自己手动加上想要返回的数据类型符号(字典除外)

    def my_print ():
        return [[1,2,3,4],[1,2,3,4],[1,2,34]]
    res = my_print()
    print(res)
    View Code

    return的作用:return除了可以返回值之外 还可以直接结束整个函数的运行

    def my_print (l):
        
        return 
        print(l)
    
    my_print("adafFDASFCAa") # 永远不会打印字符串
    View Code

    三.函数参数

    函数参数分为形参和实参

    形参:在函数的定义阶段 括号内写的变量名 叫做该函数的形式参数 简称 形参

    实参:在函数的调用阶段 括号内实际传入的值 叫做实际参数 简称 实参

    形参与实参的关系 :

    形参就相当于变量名,而实参就相当于变量的值
    函数调用传参的过程 就是给形参变量名赋值的过程

    注意:形参和实参的绑定关系只在函数的调用阶段有效,函数运行结束关系自动解除
    只在函数内部有效 函数外部无任何影响

    1.位置参数

    位置形参:在定义函数阶段按照从左到右的顺序依次定义的形参

    位置实参:在调用函数阶段按照从左到右的顺序依次传入的值

    def my_max(x,y):
        print(x,y)
        if x > y:
            return x
        else:
            return y
    
    
    res = my_max(20,10) # 在调用函数的时候 必须被传值少一个实参不行多一个实参也不行   传入的参数会按照位置一一对应给形参
    View Code

    2.关键字参数

    关键字实参:在调用函数阶段,按照key=value的形式指名道姓地为形参传值

    可以打乱顺序,以指名道姓的方式为指定的形参传值
    可以混合使用位置实参与关键字实参,但是位置实参必须放到关键字实参前面,并且不能对一个形参重复赋值

    def my_max(x,y):
        print(x,y)
        if x > y:
            return x
        else:
            return y
    
    my_max(10,y=20)  # 关键字传参
    View Code

    3.默认值参数

    默认值参数:在函数的定义阶段,形参(变量名)就已经被赋值了

    在调用的时候可以不为默认值形参传值,默认使用定义阶段就已经绑定的值
    在调用的时候如果可以给默认值形参传值 传了那么就使用你传的值
    在定义阶段 默认值形参必须放在位置形参的后面

    def my_max(x,y = 200):
        print(x,y)
        if x > y:
            return x
        else:
            return y
    
    res = my_max(200) # 默认参数
    View Code

    4.可变长参数

    而实参的定义方式无法两种:位置实参,关键字实参,对应着形参也必须有两种解决方案*与**,类分别应对溢出的位置实参与关键字实参

    1. 在形参中带*:会将调用函数时溢出位置实参保存成元组的形式,然后赋值*后的变量名

    def func(x,y,*z):
        print(x,y,z)  
    func(1,2,3,4,5,6,)
    View Code

     2. 在实参中带*: 但凡在实参中带*星的,在传值前都先将其打散成位置实参,再进行赋值

    def func(x,y,z,a,b):
        print(x,y,z,a,b)
    
    func(*[1,2,3,4,5])  # *在形参中只能接收多余的位置实参 不能接收关键字实参
    View Code

    3. 在形参中带**:会将调用函数时溢出关键字实参保存成字典的形式,然后赋值**后的变量名

    def func(x,y,**z):
        print(x,y,z)
    func(1,2,z=1,a=1,b=2,c=3)
    View Code

    4. 在实参中带**: 但凡在实参中带**星的,在传值前都先将其打散成关键字实参,再进行赋值

    def func(x,y,z):
        print(x,y,z)
    
    d = {'x': 1, 'y': 2, 'z': 333}
    func(**d)  # 等价于func(x=1,y=2,z=333)
    View Code

    总结 * 与 **
    *在形参中能够接受多余的位置参数 组织成一个元祖赋值给*后面的变量名
    **在形参中能够接受多余的关键字参数 组织成一个字典赋值给**后面的变量名

    *:在实参中 *能够将列表 元祖 集合 字符串 打散成位置实参的形式传递给函数
    (*就看成是for循环取值)
    **:在实参中 能将字典打散成key = value的形式 按照关键字参数传递给函数

    规范: 在形参中带*与**的,*后的变量名应该为args,**后跟的变量名应该时kwargs

  • 相关阅读:
    Backbone中的model和collection在做save或者create操作时, 如何选择用POST还是PUT方法 ?
    Spring boot: Request method 'DELETE' not supported, Request method 'PUT' not supported, Request method 'POST' not supported
    Backbone.js 中的Model被Destroy后,不能触发success的一个原因
    eclipse里打开SWT项目找不到source/design的图形UI设计界面
    RHEL5.6配置本地yum源
    Linux环境下Apache反向代理金蝶中间件Apusic集群
    Linux环境下源码安装Apache2.2.25
    WIN7中Beyond Compare报错误“应用程序发生错误” 无法启动
    使用Navicat迁移MySQL数据至Oracle时大小写原因报“表或视图不存在”问题处理
    -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match问题处理
  • 原文地址:https://www.cnblogs.com/Cpsyche/p/11160772.html
Copyright © 2011-2022 走看看