学习总结2019.3.29

Posted penghengshan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习总结2019.3.29相关的知识,希望对你有一定的参考价值。

函数的参数

形参:定义函数()中出现的变量名,用来接收外界传来的值
# 注:形参随着函数的调用才产生,随着函数调用结束而销毁
?
实参:函数调用()中传入的实际值,值可以是常量,变量,表达式或者三者的组合
?
‘‘‘
def fn(形参):
    pass
fn(实参)  
‘‘‘

实参分类

def fn1(a,b,c):
    print(a,b,c)
?
# 位置实参:按照位置的顺序,从左到右为形参传递值
fn1(10,20,30)
fn1(30,20,10)
?
# 关键字实参:可以不按顺序传递,形参按名字取值
fn1(a = 10,b = 20, c = 30)
fn1(c = 30,b = 20,a = 10 )
?
# 两者混用:   *****
# 关键字实参必须出现在位置实参之后,
# 多个位置实参还是按位置传参,
# 关键字实参为 没有从位置实参拿到值的形参 传值,可以不用按位置传值
fn1(10,c = 30,a = 20) # 10按位置传给a,a = 20给a传参,c = 20传给c
# 合法传参
fn1(10,b = 20,c = 30)
fn1(10,c = 20,b = 30)

形参分类

  • 位置形参

位置形参:
def fn(a,b,c):
    print(a,b,c)
位置形参可以由 位置实参 与关键字实参 传值
fn(10,20,30)
fn(a = 10,b = 20,c = 30)
  • 默认形参

默认形参:具有默认值,用=赋值
def fn(a = 10,b = 20):
    print(a,b)
位置形参可以由 位置实参 与关键字实参 传值,还可以不用传值(采用自身默认值)
fn(20,30)
fn(a = 200,b = 300)
fn(100)   #就给a传值
fn(b = 100)    #就给b传值
?
位置形参与默认形参同时存在,默认形参必须在后
def fn(a,b,c = 10,d = 20):
    print(a,b,c,d)
?
位置形参必须传值,默认形参分情况传值
fn(100,200,d = 1000)
  • 可变长位置形参

变长位置形参
可变长形参只能由 位置参数 传值
def fn(a,b = 10,*args):
    print(a,b,args)
?
可变长形参会以元组形式接收 位置形参与默认形参未接受完的 所有传入的位置实参,用索引取值
注意:可变长形参只能接受位置实参的值,位置实参还必须在关键字实参前,导致默认形参必须以位置实参传值
fn(100,200,300)
  • 关键字形参

关键字形参    必须由关键字实参传值
*为分割线,可以有变量名*args,也可以用来做分隔
?
# 1、可变位置形参以元组方式接收值
# 如:接收10,20,30三个数
def fn1(*args):
    print(args)  # (10, 20, 30)
    
# 第一种传参
fn1(10, 20, 30)
?
# 第二种传参
t = (10, 20, 30)  # 单列集合及字符串类型都可以
fn1(*t)
  • 可变长关键字形参

可变长关键字形参:用来接收没有被关键字形参未接受完的关键字实参
def fn(*,a,b = 20,c,**kwargs):
    print(a,b,kwargs)
?
fn(a = 10,b = 50,c = 50,d = 0,f = asd)
?
def fn2(**kwargs):
    print(kwargs)  # {name: Owen, age: 18}
# 第一种传参
fn2(name=Owen, age=18)
?
# 第二种传参
d = {name: Owen, age: 18}  # 单列集合及字符串类型都可以
fn2(**d)

参数总结

def fn(a,b,c = 10,d = 30,*args,e,f,**kwargs):
    print(a,b,c,d,args,e,f,kwargs)
fn(1,2,3,4,5,6,7,8,9,e = 10,f = 20,g = 30, h = 40)
?
# 总结:
# 位置形参:可由 位置实参及关键字实参 传值
# 默认形参:可由 位置实参及关键字实参 传值,也可不传值
# 可变长位置形参:接收 位置形参及默认形参未接收完的 位置实参,若可变长位置形参要传入值,则其前面参数都必须是位置形参
# 关键字形参:只能由关键字实参传值
# 可变长关键字形参:接收关键字形参未接收完的关键字实参

?

以上是关于学习总结2019.3.29的主要内容,如果未能解决你的问题,请参考以下文章

线程学习知识点总结

201621123054《Java程序设计》第九周学习总结

201621123048《Java程序设计》第九周学习总结

python常用代码片段总结

java中封装,继承,多态,接口学习总结

OpenGL 纹理学习总结