精华内容
下载资源
问答
  • 在调用函数时传给 function(或 method)的值。参数分为两种: 关键字参数:在函数调用中前面带有标识符(例如name=)或者作为包含在前面带有**的字典里的值传入。举例来说,3和5在以下对 complex...位置参数:不属...

    在调用函数时传给 function(或 method)的值。参数分为两种:

    关键字参数 :在函数调用中前面带有标识符(例如 name=)或者作为包含在前面带有 ** 的字典里的值传入。举例来说,3 和 5 在以下对 complex()的调用中均属于关键字参数:

    complex(real=3, imag=5)
    complex(**{'real': 3, 'imag': 5})

    位置参数:不属于关键字参数的参数。位置参数可出现于参数列表的开头以及/或者作为前面带有 * 的 iterable里的元素被传入。举例来说,3 和 5 在以下调用中均属于位置参数:

    complex(3, 5)
    complex(*(3, 5))

    规则:在函数调用中,关键字参数必须跟随在位置参数的后面。传递的所有关键字参数必须与函数接受的其中一个参数匹配,它们的顺序并不重要。这也包括非可选参数。不能对同一个参数多次赋值

    以下是一些正确错误范例:

    #函数定义
    def test(arg1, arg2='hello', arg3='world', arg4='nice to meet you'):
        print(arg2, arg3, arg4)
    
    #正确范例
    test(1000)                                        # 1个位置参数
    test(arg1=1000)                                   # 1个关键字参数
    test(arg1=1000, arg2='VOOOOOM')                   # 2个关键字参数
    test(arg2='VOOOOOM', arg1=1000)                   # 2个关键字参数
    test('a million', 'bereft of life', 'jump')       # 3个位置参数
    test('a thousand', arg2='pushing up the daisies') # 1个位置参数,1个关键字参数
    
    #错误范例
    test()                     # 缺少一个参数
    test(voltage=5.0, 'dead')  # 非关键字参数在关键字参数后面
    test(110, voltage=220)     # 一个参数传了多个值
    test(arg5='John Cleese')   # 对不存在的参数传值

    为了确保可读性和运行效率,我们可以对每个参数,使用限制允许的参数传递形式,这样开发者只需查看函数定义即可确定参数项是仅按位置、按位置也按关键字,还是仅按关键字传递。

    方法就是用/和*作为分隔符,把三种传递方法的参数分隔开来。

    def function(arg1, arg2, /, arg3, arg4, *, arg5, arg6):
        pass

    如上的函数,arg1和arg2是仅限位置参数,arg3和arg4是位置或关键字参数都行,arg5和arg6则是仅限关键字参数。

    最后则是官方对于函数参数给出的指导:

    • 如果你希望形参名称对用户来说不可用,则使用仅限位置形参。 这适用于形参名称没有实际意义,以及当你希望强制规定调用时的参数顺序,或是需要同时收受一些位置形参和任意关键字形参等情况。

    • 形参名称有实际意义,以及显式指定形参名称可使函数定义更易理解,或者当你想要防止用户过于依赖传入参数的位置时,则使用仅限关键字形参

    • 对于 API 来说,使用仅限位置形参可以防止形参名称在未来被修改时造成破坏性的 API 变动。

    展开全文
  • def show(a1,a2,a3): pass ...show(a1=1,a3=3,a2=2) 关键字参数 def show(*args, **kwargs): # *args元组 **kwargs字典 pass位置参数示例 from booktest import views from django.ur...
    def  show(a1,a2,a3):
        pass
    
    show(1,2,3)  位置参数
    
    show(a1=1,a3=3,a2=2)  关键字参数

     

    def show(*args, **kwargs):  # *args元组  **kwargs字典
    pass

    位置参数示例
    from booktest import views
    from django.urls import path, re_path
    
    
    urlpatterns = [
        path('', views.index),
        re_path(r'^(\d+)$', views.detail),
        re_path(r'^(\d+)/(\d+)/(\d+)/$', views.detail),  # 位置参数
    ]
    
    
    from django.http import HttpResponse
    
    
    def detail(request, p1, p2, p3):  # 位置参数
    return HttpResponse('year:%s-month:%s-day:%s' % (p1, p2, p3)) # 尽管输入是数字,但是传过来是字符串

    输出:http://127.0.0.1:8000/booktest/1/2/3/

    year:1-month:2-day:3

     

    关键字参数示例

    from booktest import views
    from django.urls import path, re_path
    
    urlpatterns = [
        path('', views.index),
        re_path(r'^(\d+)$', views.detail),
        re_path(r'^(?P<p2>\d+)/(?P<p1>\d+)/(?P<p3>\d+)/$', views.detail),  # 关键字参数
    ]
    # ?P<指定名称>
    
    
    from django.http import HttpResponse
    
    def detail(request, p1, p2, p3):  
        return HttpResponse('year:%s-month:%s-day:%s' % (p1, p2, p3))

    输出:http://127.0.0.1:8000/booktest/1/2/3/

    year:2-month:1-day:3

    转载于:https://www.cnblogs.com/gaota1996/p/10435274.html

    展开全文
  • 参数解构是阅读源码和重构的基本素养. 简单总结: 参数解构:传参时,可以在集合类型前使用 或**把集合类型结构解开 非字典类型,使用 字典类型,使用** 注:提取出来的元素的个数要与形参个数相同标题 ...

    参数解构是阅读源码和重构的基本素养.
    简单总结:
    参数解构:传参时,可以在集合类型前使用或**把集合类型结构解开
    非字典类型,使用

    字典类型,使用**
    注:提取出来的元素的个数要与形参个数相同标题

    https://www.liaoxuefeng.com/wiki/1016959663602400/1017261630425888
    廖雪峰老师的这边文章值得读三遍

    展开全文
  • 到目前为止我们所使用的参数都叫做位置参数,因为他们的位置很重要例如一下的使用方式:def hello_1(name,password) print(name+password) def hello_2(password,name) print(password+name) #这样我们在调用hello...

    到目前为止我们所使用的参数都叫做位置参数,因为他们的位置很重要例如一下的使用方式:

    def hello_1(name,password)
        print(name+password)
    def hello_2(password,name)
        print(password+name)
    #这样我们在调用hello方法的时候,必须按照顺序,输入namepassword,因为他们的位置比名字更加重要
    #上面两个代码所实现的功能是完全一样的,只是参数顺序反过来,使用方式如下
    hello_1('name','password')
    hello_2('name','password')
    #以上两个调用结果输出都是 “namepassword

    但是如果参数很多的时候,我们在调用时可能很难记住参数的顺序,我们引入关键字参数即使用参数名提供的参数,在于明确每个参数的作用,使得函数调用的时候,参数的含义变得更加清晰

    #以前面的hello_1函数为例
    hello_1(name='name',password='password')
    hello_1(password='password',name='name')
    #以上两种写法输出结果都是“namepassword”
    #这样我们在调用时,顺序就完全没有影响了,不过要注意参数名和值一定要对应

    而且关键字参数可以在定义函数的时候提供默认值

    def hello_3(name='name',password='password')
        print(name+password)
    #参数具有默认值的时候,调用的时刻可以不用提供参数,可以不提供、提供一些或提供所有的参数
    hello_3()#输出“namespacehello_3('username')#输出“usernamepasswordhello_3('username','pwd')#输出“usernamepwd”
    #如果只想提供password的参数,而让name使用默认值,使用方法如下
    hello_3(password='pwd')#输出“namepwd

    位置参数和关键字参数可以联合使用,但是要注意位置参数需要放置在关键字参数前面,例如

    def hello_4(hel,name='name',password='password')
    展开全文
  • 目前为止,我们使用函数时所用的参数都是位置参数,即传入函数的实际参数必须与形式参数的数量和位置对应。而本节将介绍的关键字参数,则可以避免牢记参数位置的麻烦,令函数的调用和参数传递更加灵活方便。 关键字...
  • 1.关键字参数和默认值 请看下面两个函数: def hello_1(greeting, name):   print('{}, {}!'.format(greeting, name))  def hello_2(name, greeting):   print('{}, {}!'.format(name, greeting))  这两个...
  • 默认参数的格式为key = value 举个例子: def add(a , b=10): result = a+b print(result) 其中b=10,就是以key = value的形式呈现的。 默认情况下依次给参数赋值,比如add(8,9)那么赋值给函数的值为a=8,b=9. ...
  • 收集参数
  • # 定义带有可变参数和关键字参数的函数 def show(*args, **kwargs): # args: 元组 # kwargs: 字典 print(args) print(kwargs) # 下面的几步知识为了迭代查看参数的每个值,要注意的是 **kwargs 的展现实字典...
  • 位置参数:必须按顺序为每个参数指定参数值 关键字参数(命名参数):按参数名为参数指定参数值,可读性更高 两种传参方式可以混合使用,但使用时关键字参数必须位于位置参数之后 参数默认值: 程序需要在定义函数时...
  • 必选参数-缺省参数 示例: 1 In [53]: def demo(a, b): ...这是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后...
  • 函数进行结构化的一种编程...关键字参数(关键字参数必须位于位置参数之后) 参数组(可变长度的参数)func(*tuple_grp_nonkw_args, **dict_grp_kw_args) *tuple_grp_nonkw_args是以元组形式体现的非关键字参数组 **dic
  • 参数的几种类型 位置参数 ... 默认值参数必须位于普通位置参数后面 命名参数(关键字参数) 按照形参的名称传递参数 #测试参数的类型:位置参数/默认值参数/命名参数def test01(a,b,c): ...
  • 四.函数

    2019-03-07 09:12:08
    1.函数的定义(略) ...#如果混合使用位置传参和关键字传参,则关键字参数必须位于位置参数之后 add(1,x = 1) #这种方式也是错误的,因为第一个参数是位置参数,传递给了x,所以x获取到了两个值,所以尽量...
  • 在函数调用时,有非关键字参数关键字参数之分,非关键字参数必须位于关键字参数之前。 在函数定义时,严格的顺序是:位置参数,默认参数,可变长元组,可变长字典。 一:调用函数时的参数 a:关键字参数 ...
  • 必须掌握的C++常用关键字汇总

    千次阅读 多人点赞 2017-01-22 14:27:55
    本文将对一些常见c++关键字做一个总结,共包括如下关键字: const、extern、operator、sizeof、-static、new、volatile、union
  • 位置参数在关键词参数之后时,会报如下错误: def lalala(x, y=2, z): print(x, y, z) >>> SyntaxError: non-default ...因为在函数调用时,无法区分到底是把值赋给关键字参数还是赋给位置参数 ...
  • def f(a,b): pass In [107]: f(1) TypeError: f() missing 1 required positional argument: 'b' 规则 2:关键字参数必须位置参数右边 在调用 f 时,通过键–值方式为函数形参传值。 def f(a): print(f'a:{a}') f...
  • 如果一个操作符含有多种参数,那么位置参数必须位于所有参数之前 位置参数,相互之间不允许调换先后顺序 关键字参数 keywork parameter 简称键字参数,以关键字来描述其特性 一般带=都是关键字参数 俩个例外:PGM= ...
  • c++ 关键字详解

    千次阅读 2017-07-01 23:10:10
    许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下:  常变量: const 类型说明符 变量名  常引用: const 类型说明符 &引用名  常对象:...
  • Java中this关键字底层原理

    千次阅读 2019-08-02 00:34:12
    3.this调用本类中的其他构造方法(只能引用一个构造方法且必须位于首行)。 简单的如何使用,这里就跳过了,本文主要是分析原理,这里需要有点点jvm的知识,不过我也会介绍的。 下面进入正题:当我们在方法内部...
  • C++关键字—Const

    千次阅读 2016-11-04 09:16:31
    const 这个关键字还是比较重要的,需要掌握
  • 4.4 Python参数收集和逆向参数收集

    千次阅读 2019-06-29 21:21:16
    4、参数收集和逆向参数收集 1)参数收集 (1)*参数 说明: 在形参前面添加一个星号(*),意味着...若支持“普通”参数收集的形参位于前面,后面的参数则需要使用关键字参数传值 def test(num, *books): ...
  • python函数中参数问题

    2020-04-29 21:44:23
    参数可以分为三种:位置参数关键字参数,默认参数 位置参数:当调用函数,传入参数时,位置和数目与定义的函数参数一致,如下图: def test(str1,str2): #定义函数test print(str1) print(str2) print(test(1,...
  • Robot_Framework:关键字

    2021-01-12 21:14:22
    Keyword关键字 1、Robot Framework主要就是关键字驱动的自动化测试,关键字是它的核心。从关键字的类型来说,可以分为系统关键字和用户关键字两种 ⑴系统关键字通常都是来源于测试库 ⑵用户关键字更多的是来源于...
  • 位置参数 顾名思义,在调用函数时根据函数定义的参数位置来传递参数 def fun(a,b): print("arg a:", a) print("arg b:", b) ...关键字参数 在调用函数时,也可以通过 “键-值” 对来对应赋...
  • C++关键字或运算符

    千次阅读 2015-06-30 07:37:39
    __asm关键字启动内联汇编并且能写在任何c/c++合法语句之处.它不能单独出现.它必须接汇编指令、一组被大括号包含的指令或一对空括号.术语“__asm 块”在这里是任意一个指令或一组指令无论是否在括号内。 以下代码...
  • c51 reentrant 关键字详解

    千次阅读 2019-08-20 10:00:07
    正常情况下,C51程序中的函数不能被递归地调用,这是由于函数的参数和局部变量都被保存在固定的地址,在递归调用时操作了相同存储位置,导致数据被覆盖。 使用reentrant声明函数为可递归调用的可重入函数:  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,586
精华内容 28,634
关键字:

关键字参数必须位于位置参数