【问题标题】:Default value for file path in function gives SyntaxError. Work around?函数中文件路径的默认值给出了 SyntaxError。解决问题?
【发布时间】:2011-01-28 23:57:32
【问题描述】:

为此,

import os.path

def f(data_file_path=os.path.join(os.getcwd(),'temp'),type):
    ...
    return data

我明白了,

SyntaxError: non-default argument follows default argument

有没有办法让这个工作,或者我必须定义一个变量,例如,

rawdata_path = os.path.join(os.getcwd(),'temp')

然后将其插入函数中?

【问题讨论】:

    标签: python function default-value


    【解决方案1】:

    type移动到data_file_path之前

    def f(type,data_file_path=os.path.join(os.getcwd(),'temp')):
    

    在称为默认参数的函数参数中分配值,这些值应位于非默认参数之后

    【讨论】:

      【解决方案2】:

      您必须切换参数的顺序。强制参数(没有默认值)必须位于具有设置默认值的参数之前。

      【讨论】:

        【解决方案3】:

        重新排列参数:

        def f(type, data_file_path=os.path.join(os.getcwd(),'temp')):
            pass
        

        这样做的原因是,可以省略具有默认值的参数。
        但是你调用f('foo'),不知道你是否要设置type并省略data_file_path

        【讨论】:

          【解决方案4】:

          有默认值的参数应该放在所有没有默认值的参数之后。

          改成:

          import os.path
          
          def f(type, data_file_path=os.path.join(os.getcwd(),'temp')):
              ...
              return data
          

          【讨论】:

            【解决方案5】:

            没关系。

            SyntaxError: non-default argument follows default argument 
            

            指的是参数的顺序所以,

            def f(type,data_file_path=os.path.join(os.getcwd(),'temp')):
            

            有效!

            我是新手

            【讨论】:

              猜你喜欢
              • 2011-06-21
              • 2019-08-02
              • 2022-09-27
              • 2019-04-19
              • 1970-01-01
              • 1970-01-01
              • 2019-10-24
              • 2012-02-04
              • 1970-01-01
              相关资源
              最近更新 更多