zoukankan      html  css  js  c++  java
  • Python 传递任意数量的实参

    在定义函数的时候如果你不知道该函数在使用的时候要接收多少的实参怎么办?

    好在python提供了可以接收任意数量的实参的操作。

    # def sandwitch(*ingredents):
    #     print("The ingredient of the sandwitch including")
    #     for ingredent in ingredents:
    #         print(ingredent)
    # sandwitch('cabbage','prock','beef')
    # sandwitch('mutton','fish')
    *ingredents 是定义一个名为 ingredents 的空元组,然后在函数被调用的时候将接收到的所有值(实参)放进该元组中,由此一来便实现了传递任意数量的实参的操作。

    注:
    当位置实参和任意数量的实参相结合使用时,要将接纳任意数量的实参的形参(元组)要放在最后面,因为Python会先匹配位置实参,然后将剩下的实参收集到最后一个形参(元组)中。
    比如上面那个例子,还要加上尺寸size的话,函数的定义就应该如下
    def sandwitch(size,*ingredents):

    此外Python还提供了“使用任意数量的关键字实参 ”,简单地说就是可以将一个字典序作为形参。如下一个例子

    def build_porfile(first,last,**user_info):
        profile={}
        profile['first_name']=first
        profile['lase_name']=last
        for key,value in user_info.items():
            profile[key]=value
        return profile
    
    user_info=build_porfile('albert','einstein',location='prinecton',field='physics')
    
    print(user_info)

    其中形参中的 **user_info 定义的是一个空字典,并将在函数调用时收到的所有的 key和value封装到该字典中。

    或者可以这样子理解,在接收任意数量的实参的定义中只需存入某一个值,所以用的是 一个“*” (元组),在任意数量的关键字实参时用到的是字典,需要存的是两个值 key和 value,所以是 double star。

    以上的内容学习自《Python:从入门到实践》,挺好的一本书,可以作为基础入门的学习资料

  • 相关阅读:
    使用树莓派打造远程WEB服务器
    oracle 12c新建pdb实例
    word标题变成黑色方块解决
    idea 报JDBC连接失败原因之一
    maven项目pom.xml需要的一些配置
    Mysql时区无法识别
    数据库报ORA-12514
    win10无法在桌面右键快捷打开个性化设置、显示设置,在任务栏右键无法快捷打开任务栏设置
    Tomcat部署项目时,发布的项目页面部分乱码,且页面渲染文件也是乱码。
    高性能、高稳定性的跨平台MQTT客户端
  • 原文地址:https://www.cnblogs.com/Guhongying/p/10010888.html
Copyright © 2011-2022 走看看