当前位置: 首页 > 面试题库 >

**(double star/asterisk)和*(star/asterisk)对参数有什么作用?

壤驷华辉
2023-03-14
问题内容

在以下方法定义中,*做param2什么?

def foo(param1, param2):
def bar(param1,
*param2):


问题答案:

*args**kwargs是一种常见的成语,以允许参数,以作为部分所述功能的任意数量的多个上定义函数 Python文档英寸

*args给你的所有函数参数为一个元组:

def foo(*args):
    for a in args:
        print(a)        

foo(1)
# 1

foo(1,2,3)
# 1
# 2
# 3

**kwargs会给你所有的 关键字参数除了那些与作为字典的形式参数。

def bar(**kwargs):
    for a in kwargs:
        print(a, kwargs[a])  

bar(name='one', age=27)
# age 27
# name one

这两个习惯用法都可以与普通参数混合使用,以允许使用一组固定参数和一些可变参数:

def foo(kind, *args, **kwargs):
   pass

也可以以其他方式使用此方法:

def foo(a, b, c):
    print(a, b, c)

obj = {'b':10, 'c':'lee'}

foo(100,**obj)
# 100 10 lee

*l习惯用法的另一种用法是在调用函数时解压缩参数列表。

def foo(bar, lee):
    print(bar, lee)

l = [1,2]

foo(*l)
# 1 2

在Python 3中,可以*l在分配的左侧使用(Extended Iterable Unpacking),尽管在这种情况下它提供的是列表而不是元组:

first, *rest = [1,2,3,4]
first, *l, last = [1,2,3,4]

Python 3还添加了新的语义):

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass

该函数仅接受3个位置参数,之后的所有内容*只能作为关键字参数传递。



 类似资料:
  • Asterisk 是一个开放源代码的软件VoIP PBX系统,它是一个运行在Linux环境下的纯软件实施方案。Asterisk是一种功能非常齐全的应用程序,提供了许多电信功能,能够把你的 x86 机器变成你自己的交换机,还能够当作一台企业级的商用交换机。Asterisk让人激动的事情是它在小企业预算可承受的范围内提供了商业交换机的功能和可伸缩性。你可以使用一台老式的奔腾3计算机,让你的机构看起来就

  • AQL (Astconf Query Language) 是一种类似 SQL 的语句用来为 PHP 读写 Asterisk 配置文件提供方便。 示例代码:   <? include("aql.php"); // to query extension 8001 settings from sip.conf $aql = new aql; $aql->set('basedir','/etc/aster

  • Asterisk CTI 是一个基于 Asterisk 的 CTI 计算机电话集成方案,包含服务器端和客户端软件,采用 .NET 开发。

  • Flite For Asterisk 1.6 提供了在 Asterisk 中使用 Flite 语音识别引擎的功能。 This module invokes the Flite TTS engine locally, and uses it to render text to speech. It supports 8kHz and 16kHz sample rates to provide the

  • AsteriskJava 是用于集成 Asterisk PBX 的 Java 类库。 示例代码: import org.asteriskjava.fastagi.AgiChannel;import org.asteriskjava.fastagi.AgiException;import org.asteriskjava.fastagi.AgiRequest;import org.asteriskj

  • Asterisk eSpeak 使得你可以在 Asterisk 中使用 eSpeak 语音合成器。 This module invokes the eSpeak TTS engine locally, and uses it to render text to speech. It supports the following languages: Afrikaans, Albanian, Arm