*args它是tuple元组;**kwargs它是dict字典

本文介绍了Python编程中*args和**kwargs的使用,*args用于接收任意数量的无名参数,它是一个元组;**kwargs则用于接收关键字参数,它是一个字典。文中通过多个示例展示了它们的用法,并详细解释了str.format()方法的功能和应用,包括位置参数、关键字参数的传递方式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*args表示任何多个无名参数,它是一个tuple元组;**kwargs表示关键字参数,它是一个dict字典
def foo(*args, **kwargs):
   print('args = ', args)
   print('kwargs = ', kwargs)
   print '----'
   
if __name__ == '__main__':  # 程序主入口
   foo(1,2,3,4)
   foo(a=1,b=2,c=3)
   foo(1,2,3,4, a=1,b=2,c=3)
   foo('a', 1, None, a=1, b='2', c=3)
foo('ajin', 'hello', 666, 'kitty', age=2.5, gender='female')
输出结果如下:
args =  (1, 2, 3, 4) 
kwargs =  {} 

args =  () 
kwargs =  {'a': 1, 'c': 3, 'b': 2} 

args =  (1, 2, 3, 4) 
kwargs =  {'a': 1, 'c': 3, 'b': 2} 

args =  ('a', 1, None) 
kwargs =  {'a': 1, 'c': 3, 'b': '2'} 

1、*args的使用方法

*args表示任何多个无名参数,*args 用来将参数打包成tuple给函数体调用
### 如示例1:
def function1(*args):
   	print(args, type(args))
function1(1)   输出: (1,) <class 'tuple'>

如示例2:

def function2(x, y, *args):
   print(x, y, args)
function2(1, 2, 3, 4, 5)   输出: 1 2 (3, 4, 5)

2、**kwargs的使用方法

**kwargs表示关键字参数,它是一个dict,**kwargs 打包关键字参数成dict(字典)给函数体调用

如示例1:

def function3(**kwargs):
   print( kwargs, type(kwargs))
function3(a=2)   输出: {'a': 2} <class 'dict'>

如示例2:

def function4(**kwargs):
	   print(kwargs)
function4(a=1, b=2, c=3)   输出: {'a': 1, 'b': 2, 'c': 3}

注意点:参数arg、*args、**kwargs三个参数的位置必须是一定的。必须是(arg,*args,**kwargs)这个顺序,否则程序会报错

如示例3:

def function(arg,*args,**kwargs):
	   print(arg, args, kwargs)
function(6, 7, 8, 9, a=1, b=2, c=3)
输出: 6 (7, 8, 9) {'a': 1, 'b': 2, 'c': 3}

str.format() 方法详解

1、省略字段名传递位置参数

print('我叫{},今年{}岁。'.format('小明', 18))
   我叫小明,今年18岁。

2、花括号个数可以少于位置参数的个数

print('我爱吃{}和{}。'.format('香蕉', '苹果', '大鸭梨'))
   我爱吃香蕉和苹果。

3、 通过数字形式的简单字段名传递位置参数

print('身高{0},家住{1}。'.format(1.8, '铜锣湾'))
   身高1.8,家住铜锣湾

4、 数字形式的简单字段名可以重复使用。

print('我爱{0}。\n她今年{1}。\n{0}也爱我。'.format('阿香', 17))
   我爱阿香。
   她今年17。
   阿香也爱我。

5、体会把所有位置参数整体当成元组来取值

print('阿香爱吃{1}、{3}和{0}。'.format(
  '榴莲', '臭豆腐', '皮蛋', '鲱鱼罐头', '螺狮粉'))
阿香爱吃臭豆腐、鲱鱼罐头和榴莲。

6、 使用变量名形式的简单字段名传递关键字参数

print('我大哥是{name},今年{age}岁。'.format(name='阿飞', age=20))
   我大哥是阿飞,今年20岁。

7、关键字参数的顺序可以随意调换

print('我大哥是{name},今年{age}岁。'.format(age=20, name='阿飞'))
   我大哥是阿飞,今年20岁。

8、 可以同时传递位置参数和关键字参数

print('这是一个关于{0}、{1}和{girl}的故事。'.format(
   '小明', '阿飞', girl='阿香'))
这是一个关于小明、阿飞和阿香的故事。

9.、使用元组传参

infos = '钢铁侠', 66, '小辣椒'
print('我是{},身价{}亿。'.format(*infos))
   我是钢铁侠,身家66亿。
10、使用字典传参
venom = {'name': '毒液', 'weakness': '火'}
print('我是{name},我怕{weakness}。'.format(**venom))
   我是毒液,我怕火。

1 1、同时使用元组和字典传参

hulk = '绿巨人', '拳头'
captain = {'name': '美国队长', 'weapon': '盾'}
print('我是{}, 我怕{weapon}。'.format(*hulk, **captain))
print('我是{name}, 我怕{1}。'.format(*hulk, **captain))
   我是绿巨人, 我怕盾。
   我是美国队长, 我怕拳头。

打印字符串

1.打印字符串
print("My name is %s" %("Alfred.Xue"))
   #输出效果:My name is Alfred.Xue
2.打印整数
print("I am %d years old." %(25))
   #输出效果:I am 25 years old.
3.打印浮点数
print ("His height is %f m"%(1.70))
   #输出效果:His height is 1.700000 m
    ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值