zoukankan      html  css  js  c++  java
  • 2018.09.25python学习第十天part4

    # 4.函数的参数

    # 形式参数(形参):在定义函数阶段,括号内定义的参数(变量名)
    #
    # 实际参数(实参):在调用函数阶段,括号内传入的值(变量值)

    # ****
    # 在调用函数阶段hi将实参的值绑定给形参,这种绑定关系只在调用时生效,
    # 在函数执行完毕后就会解除绑定。

    # def func(x,y):# x,y 就是形参
    # # x=1
    # # y=2
    # print(x,y)
    #
    # func(1,2)


    # 细分:
    #
    # 1.位置参数
    # 1.1 位置形参:在定义阶段,按照从左到右的顺序依次定义的形参
    #
    # ***
    # 凡是按照位置定义的形参,必须被传值,一个不能多,一个不能少

    # def func(x,y,z):
    # print(x,y,z)
    # func(1,3)###报错,少一了值
    # func(1,2,3)####正确
    # func(1,2,3,4)####报错,多了一个值

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

    # ****
    # 与形参一一对应

    # def func(x,y,z):
    # print(x,y,z)
    # func(2,1,4)


    # # 2.关键字实参
    # 在调用阶段,按照key=value的形式定义的实参称之为关键字实参
    #
    # ****
    # 可以完全打乱顺序,(指名道姓的给形参传值)

    # def func(x,y,z):
    # print(x,y,z)
    # func(x=1,z=3,y=4) #不需要像位置实参那样一一对应

    # ******
    # 关键字实参和位置实参可以混用,但是必须遵循以下原则
    #
    # 1.位置实参必须在关键字实参前面
    # 2.不能对同一形参进行重复传值
    #
    # def func(x,y,z):
    # print(x,y,z)
    # func(1,y=2,z=4)###正确
    # func(1,y=2,x=5,z=3)###错误
    # func(x=2,3,z=8)###错误

    # 3.默认形参
    #
    # 在定义阶段,就已经为形参赋值了,
    #
    # *****
    # 1.在定义阶段就已经赋值了,意味着调用阶段可以不用传值,但是也可以传
    # 2.位置形参必须放到默认形参前面
    # 3.默认的形参值在函数定义阶段就已经固定死了,定义阶段以后不能改默认值
    # 4.默认形参的值通常时不可变类型

    # def func(x,y,z=100):
    # print(x,y,z)
    # func(10,20)####后面的z默认就是100了
    #
    # 应用:如一个班的女生很少,只有个位数
    #
    # def register(name,age,sex='male'):
    # print(name,age,sex)
    # register('egon',18)
    # register('tony',18)
    # register('sb',28,'female')

    # 4.可变长函数:
    #
    # 可变长实参:指再调用阶段,实参值个数时不固定
    # 实参无非就是两种形式(位置实参,关键字实参),对应着的形参也必须有两种方法来解决
    # *------>溢出的位置实参
    # **----->溢出的关键字实参

    #溢出的位置实参的应用
    # def sum2(*x):
    # res=0
    # for i in x:
    # res+=i
    # return res
    # print(sum2(1,2,3,4,5))

    # 4.1. *的用法
    #
    #再形参前面加*,*会将溢出的位置实参以tuple的形式赋值给*后面的形参:
    # def func(x,y,*z):
    # print(x,y,z)
    # func(1,2,3,4,5)

    #在实参前面加*,但凡碰到实参前面加*的,先将实参打散成位置实参,再与形参对应
    # def func(x,y,z):
    # print(x,y,z)
    # func(*[1,2,3])# 正确 func(1,2,3)
    # func(*[1,2,3,4,5])#报错, func(1,2,3,4,5) 违反了位置形参的原则

    # 4.2. **的用法

    # 在形参前面加**,会将溢出的关键字实参以dict的形式赋值给**后面的变量名
    # def func(x,y,**z):
    # print(x,y,z)
    # func(1,2,a=3,b=4,c=5)

    #在实参前面加**,先将实参打散成关键字实参,再与形参做对应

    # def func(x,y,z):
    # print(x,y,z)
    # func(**{'x':1,'y':2,'z':3})
  • 相关阅读:
    设计模式
    三——第二部分——第二篇论文 计划建设SQL Server镜像
    非正确使用浮点数据由项目产生BUG讨论的问题
    重写ViewPager实施单一交有关切换到这个问题,并没有缓存
    1159 Palindrome(最小插入回文串)
    CSDN-markdown编者LaTex数学公式
    找工作总结
    开展:随笔记录 OSGI的jar增加了一些小问题和注意事项
    js jquery版本号 金额千分之一转换功能(非规范,高效率)
    dom4j.jar有什么作用?
  • 原文地址:https://www.cnblogs.com/hello-yuanjing/p/9700330.html
Copyright © 2011-2022 走看看