Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 函数定义和函数调用中参数和参数的顺序_Python - Fatal编程技术网

Python 函数定义和函数调用中参数和参数的顺序

Python 函数定义和函数调用中参数和参数的顺序,python,Python,在学习python中的参数和参数的最后,我终于得出了以下结论 函数定义中参数的顺序 def foo ( non-optional parameters , optional parameters , *args , **kwargs): 函数调用中参数的顺序 foo( non-keyword arguments , keyword arguments ) 只是想知道在python世界中是否有例外。。。。 此外,如果有任何其他类型的参数/参数,请发表评论 谢谢 描述了该语言的语法和“核心语义”

在学习python中的参数和参数的最后,我终于得出了以下结论

函数定义中参数的顺序

def foo ( non-optional parameters , optional parameters , *args , **kwargs):
函数调用中参数的顺序

foo( non-keyword arguments , keyword arguments )
只是想知道在python世界中是否有例外。。。。 此外,如果有任何其他类型的参数/参数,请发表评论

谢谢

描述了该语言的语法和“核心语义”。它是简洁的,但试图准确和完整。在这里,您可以找到使用修改符号的词汇分析和语法描述

通常所有Python实现都遵循此语法。因此,在这种语法上不应有例外。如果是,您应该参考特定于实施的文档


参数匹配语法 总结调用特殊参数匹配模式的语法。 函数参数匹配形成语法位置解释

  • func(value)调用方正常参数:按位置匹配
  • func(name=value)调用方关键字参数:按名称匹配
  • func(*iterable)调用方将iterable中的所有对象作为单个位置参数传递
  • func(**dict)调用方将dict中的所有键/值对作为单个关键字参数传递
  • 下面是定义函数的步骤

  • def func(name)函数普通参数:按位置或名称匹配任何传递的值
  • def func(name=value)函数默认参数值,如果调用中未传递
  • def func(*name)函数匹配并收集元组中剩余的位置参数
  • def func(**name)函数匹配并收集字典中剩余的关键字参数
  • def func(*other,name)调用(3.X)中只能通过关键字传递的函数参数
  • def func(*,name=value)只能在调用(3.X)中通过关键字传递的函数参数
  • 可能与Allowed for和Allowed for的语法重复-请注意,在Python 3.x中指定位置参数结尾的区别将在中讨论
    decorated      ::=  decorators (classdef | funcdef)
    decorators     ::=  decorator+
    decorator      ::=  "@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE
    funcdef        ::=  "def" funcname "(" [parameter_list] ")" ":" suite
    dotted_name    ::=  identifier ("." identifier)*
    parameter_list ::=  (defparameter ",")*
                        (  "*" identifier ["," "**" identifier]
                        | "**" identifier
                        | defparameter [","] )
    defparameter   ::=  parameter ["=" expression]
    sublist        ::=  parameter ("," parameter)* [","]
    parameter      ::=  identifier | "(" sublist ")"
    funcname       ::=  identifier
    
    call                 ::=  primary "(" [argument_list [","]
                              | expression genexpr_for] ")"
    argument_list        ::=  positional_arguments ["," keyword_arguments]
                                ["," "*" expression] ["," keyword_arguments]
                                ["," "**" expression]
                              | keyword_arguments ["," "*" expression]
                                ["," "**" expression]
                              | "*" expression ["," "*" expression] ["," "**" expression]
                              | "**" expression
    positional_arguments ::=  expression ("," expression)*
    keyword_arguments    ::=  keyword_item ("," keyword_item)*
    keyword_item         ::=  identifier "=" expression