美文网首页
函数的四类参数

函数的四类参数

作者: 桃阿 | 来源:发表于2018-05-13 13:39 被阅读0次

四类参数

  • 普通参数
  • 默认参数
  • 关键字参数
  • 收集参数

关键字参数

  • 语法
    def fun(p1=v1, p2=v2, ...):
          fun_body
    调用函数:
    fun(p1=value1, v2=value2, ...)
  • 比较麻烦,但是也有好处:
  • 不容易混淆,一般实参和形参只是按照位置一一对应即可,容易出错
  • 使用关键字参数,可以不考虑参数位置
#关键字参数示例
def student(name="No name", age=0, address="No address"):
  print("I am a student")
  print("My name is %s,i am %s,my home town is %s"%(name, age, address))

_name = "张三"
_age = 18
_address = "山西"
#普通参数,只按照位置传递,容易出错
student(name=_name, age=_age, address=_address )
I am a student
My name is 张三,i am 18,my home town is 山西

收集参数

  • 把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中
  • 语法
def fun(*args):
   fun_body
   按照list使用方式访问args得到传入的参数
   调用:
   fun(p1, p2, p3, ......)
  • 参数名args不是必须这么写,但是,推荐用args,约定俗成
  • 参数名args前需写星号
  • 收集参数可以和其他参数共存
# 收集参数代码
# 函数模拟一个学生进行自我介绍,但具体内容不清楚
# args 把他看成一个list
def stu( *args):
        print("Hello, 大家好!")
        print(type(args))   #type函数检测变量的类型
        for it in args:
            print(it)

stu("王五", 18, "北京")
stu("桃大仙,啊哈")
 王五
 18
 北京
 Hello, 大家好!
 桃大仙,啊哈

收集参数 之 关键字收集参数

  • 定义把关键字参数按字典格式存入收集参数、
  • 语法
def fun( **kwargs):
   fun_dody
#调用
fun(p1=v1, p2=v2, p3=v3, ......)
  • kwargs约定俗成
  • 调用的时候,把多余的关键字参数kwargs
  • 访问kwargs需要按字典格式访问
# 收集参数案例
# 自我介绍
# 调用的时候需要使用关键字参数调用
# 收集参数案例

def stu( **kwargs):
    print("大家好,我来介绍下:")
    print(type(kwargs))
    for k, v in kwargs.items():
        print(k,"-----",v)
    print("*" * 50)

stu(name="张三", age=18, address="东北", love="李四", work="Student")
stu(name="桃大神")
stu(age=20)
大家好,我来介绍下:
<class 'dict'>
name ----- 张三
age ----- 18
address ----- 东北
love ----- 李四
work ----- Student
**************************************************
大家好,我来介绍下:
<class 'dict'>
name ----- 桃大神
**************************************************
大家好,我来介绍下:
<class 'dict'>
age ----- 20
**************************************************

收集参数 之 混合调用的顺序问题

  • 收集参数、关键字参数、普通参数可以混合使用
  • 使用规则就是,普通参数和关键字参数优先
  • 定义的时候一般找普通参数,关键字参数,收集参数tuple,收集参数dict
# 收集参数混合调用案例
# stu模拟一个学生的自我介绍

def stu(name, age, address, hobby="没有", *args, **kwargs):
    print("大家好!")
    print("我叫%s,我今年%s岁了,我的家庭在%s"%(name, age, address))
    if(hobby == "没有"):
        print("我没有爱好!@")
    else:
        print("我的爱好是%s"%hobby)
    for k, v in kwargs.items():
        print(k, " ", v)
    print("*" * 50)

# NO.1
stu(name="嘻嘻", age=12, address="sda")
# NO.2
stu(name="呵呵", age=5, address="机场", hobby="打游戏")
# NO.3
stu(name="哈哈", age=18, address="机场", hobby="打ss", love="嘻嘻")
大家好!
我叫嘻嘻,我今年12岁了,我的家庭在sda
我没有爱好!@
**************************************************
大家好!
我叫呵呵,我今年5岁了,我的家庭在机场
我的爱好是打游戏
**************************************************
大家好!
我叫哈哈,我今年18岁了,我的家庭在机场
我的爱好是打ss
love   嘻嘻
**************************************************

相关文章

  • 函数的四类参数

    四类参数 普通参数 默认参数 关键字参数 收集参数 关键字参数 语法 比较麻烦,但是也有好处: 不容易混淆,一般实...

  • 函数

    函数初识 函数的参数 函数的多个参数 可变参数 参数传递 函数的返回值 函数的多返回值 return语句 函数中变...

  • 2.函数的定义及函数的参数

    函数的定义 函数的参数 (必传) 函数的可选参数 可选参数 使用 '?'可选参数必须配置到参数的后面 函数的默认参...

  • python函数

    python函数 什么是函数 函数语法 调用函数 函数参数形参与实参传参指定参数传参参数默认值可变参数参数解包参数...

  • Python11学习-函数

    调用函数第一函数函数的参数 (必选参数、默认参数、*可变参数、**关键字参数和命名关键字参数)递归函数 注意事项:...

  • Swift-函数坑

    1. 函数的定义和调用 函数声明func 函数名(参数名:参数类型, 参数名:参数类型, ...) -> 函数返回...

  • 数据挖掘20210108学习笔记

    函数 函数与参数 (1)形式参数与实际参数 (2)写函数的函数 function(){ } (3)默认参数:作者会...

  • Python 函数

    调用函数 定义函数 函数的参数必选参数、默认参数、可变参数、关键字参数、命名关键字参数 位置参数 默认参数 可变参...

  • kotlin中级篇

    函数和lambda表达式 函数声明 函数调用 默认参数 命名参数 可变数量的参数(Varargs)函数的参数(通常...

  • Shell 5. 函数

    函数的定义 函数的调用 调用函数并且传入参数 函数的参数 1. 位置参数 参数说明$#代表传入的参数个数$*所有参...

网友评论

      本文标题:函数的四类参数

      本文链接:https://www.haomeiwen.com/subject/jykldftx.html