首页 > 其他分享 >传递任意数量的实参

传递任意数量的实参

时间:2023-02-17 15:02:16浏览次数:39  
标签:profile 函数 make 传递 toppings 实参 任意 pizza


一 丶

有时候,你预先不知道函数需要接受几个实参 , 好在python 允许从调用语句中收集任意数量的实参,

例如 , 来看一个制作披萨的函数 , 他需要接受很多配料 , 但你无法预先确定顾客预先要多少种配料 , 下面的函数只有一个

形参*toppings

# 传递任意数量的实参 python
def make_pizza(*toppings):
""" 打印顾客点的所有配料"""
print(toppings)
make_pizza('Pepperoni')
make_pizza('mushrooms','green peppers','extra cheese')

形参名 *toppings 中的星号让python 创建一个名为toppings的空元祖 , 并将收到的所有值都封装在这的元组里 .ps(python将实参封装到一个元组中,即便函数值只收到了一个值) . 

1.1 结合使用位置实参和任意数量实参

如果要让函数接受不同类型的实参 , 必须在函数定义中将接纳任意数量的实参的形参放在最后,python先匹配位置实参和关键字实参,再将余下的实参收集到最后一个形参中. 

例如 ,如果上面的函数还需要一个表示披萨尺寸的实参, 必须将形参放在形参 *toppings的前面'

def make_pazzle(size,*toppings ):
print("\nMaking a "+str(size)+
"-inch pizza with the following toppings")
for topping in toppings:
print("- "+topping)

make_pazzle(16,'pepperoni')
make_pazzle(12,'mushrooms','green peppers ','extra cheese')

 

输出结果 :

Making a16-inch pizza with the following toppings
- pepperoniMaking a12-inch pizza with the following toppings
- mushrooms
- green peppers
- extra cheese

 

基于上述函数定义 , python将收到的第一个值存储在形参size 中,并将其他的所有值都存储在元组toppings 中.

1.2使用任意数量的关键字实参

有时候 ,需要接受任意数量的实参, 但预先不知道传递的函数会是什么样的信息 .在这种情况下,可以将函数编写成能够接受任意数量的键值对 ---调用语句提供了多少就接受多少 . 一个这样的实例是创建用户简介 :

 

def build_profile(first,last ,**user_info):
profile ={}
profile['first_name'] = first
profile['last_name'] = last
for key ,value in user_info.items():
profile[key] = value
return profile
user_profile = build_profile('albert','einstein',location = 'princeton',filed = 'physics')
print(user_profile)

 

 

 

 

 

 

标签:profile,函数,make,传递,toppings,实参,任意,pizza
From: https://blog.51cto.com/u_15970235/6064117

相关文章

  • Android app:回调方式实现Service向activity传递数据
    一、开启服务的时候,如果我们是通过bindService来绑定服务并且要向服务传递数据,可以直接在Intent中设置bundle来达到效果,但是如果是我们需要从服务中返回一些数据到Activit......
  • 传递数据(props)
    student.vue<template> <div> <h3>{{msg}}</h3> <h3>姓名:{{name}}</h3> <h3>年龄:{{myage}}</h3> <h3>性别:{{sex}}</h3> <button@click="add">点击我,年龄+......
  • uni-app:页面跳转/参数的传递接收(hbuilderx 3.6.18)
    一,页面跳转与参数传递//跳转到详情页goItem:function(id,title){uni.navigateTo({url:'../item/i......
  • 我不想再传递 nameof 了
    有的时候抛出一个异常,我们需要知道是哪个方法抛出的异常。那么,我们可以通过传递nameof来获取调用者的方法名。但是,感觉很烦,每次都要传递nameof。那么,有没有更好的方法呢......
  • Web 页面之间传递参数
    Web页面之间传递参数的方法有很多种,下面列出一些常见的方法以及它们的代码示例。一、前端直接传递参数1、URL参数传递(querystring):通过URL的查询字符串(即问号后面的......
  • win10 将任意文件固定到开始屏幕(最佳办法)
     1.情景展示以.bat文件文件为例,想将其固定到开始屏幕上,但是选中-->右键,却没有固定到开始屏幕选项,如何将其固定到开始屏幕上呢?2.解决方案选中你要固定到开始屏幕上......
  • 任意模数多项式乘法-多模数快速数论变换
    本文作者为JustinRochester。目录地址上一篇下一篇任意模数多项式乘法在部分题目中,我们的多项式运算结果并不是对多项式模数(如\(998244353\))取模,而是对一些指定的(......
  • 圆弧中任意一点坐标值求解
    一、圆弧中点坐标值求解主要目的在于求解在二维平面中,任意圆心确定,起点确定的圆弧上,任意一点的二维坐标位置的计算方法。二、基于复数的圆弧求解办法设圆心C对应的复......
  • C语言:任意输入一串数字,统计出现次数最多的数字及出现次数
    #include<stdio.h>main(){intshu[10]={0},su,max[2];while((su=getchar())!='\n')shu[su-48]++;for(su=1,max[1]=0;su<10;su++)if(shu[su]>=......
  • C语言:任意10个浮点数从小到大排序
    //冒泡排序:将任意10个浮点数从小到大排序#include<stdio.h>main(){floata[10],t;inti,j,k,b;for(i=0;i<=9;i++)scanf("%f",&a[i]);for(......