代码之家  ›  专栏  ›  技术社区  ›  Jhonny

位置参数跟在关键字参数后面,不知道如何解决这个问题

  •  0
  • Jhonny  · 技术社区  · 2 年前

    如何修复此错误?

    代码:

    import pandas as pd 
    import seaborn as sns
    
    api_key = 'API_KEY'
    channel_id = 'CHANNEL_ID'
    
    youtube = build('youtube','v3', developerKey=api_key)
    
    
    def get_channel_stats (youtube, channel_id):
        request = youtube.channels().list(
                part= 'snippet','contentDetails','statistics',id=channel_id)
        response = request.execute()
        return response
    

    错误消息:

    SyntaxError: positional argument follows keyword argument
    

    如何避免这个错误?我在某个地方犯了一个愚蠢的错误,但不知道如何修复它。

    3 回复  |  直到 2 年前
        1
  •  0
  •   Bendik Knapstad    2 年前

    你的代码看起来不错,你只需要改变你发送零件参数的方式。

    你需要一个逗号分隔的字符串,而不是用逗号分隔的几个字符串。

    import pandas as pd 
    import seaborn as sns
    
    api_key = 'API_KEY'
    channel_id = 'CHANNEL_ID'
    
    youtube = build('youtube','v3', developerKey=api_key)
    
    
    def get_channel_stats (youtube, channel_id):
        request = youtube.channels().list(
                part='snippet,contentDetails,statistics', id=channel_id)
        response = request.execute()
        return response
    
        2
  •  0
  •   baileythegreen    2 年前

    假设剩下的论点 youtube.channels().list() 如果顺序正确,你只需要移动一下 part = 'snippet' 结束解析器希望首先找到所有位置参数(未指定参数名称的参数),因此 <name>= 语法必须在结尾。

    原因是许多函数都接受 *args **kwargs ,其目的是允许任意数量的参数。确保未命名参数被分配到正确位置的唯一方法是严格控制它们在函数调用中的顺序和位置。

    import pandas as pd 
    import seaborn as sns
    
    api_key = 'API_KEY'
    channel_id = 'CHANNEL_ID'
    
    youtube = build('youtube','v3', developerKey=api_key)
    
    
    def get_channel_stats (youtube, channel_id):
        request = youtube.channels().list(
                'contentDetails','statistics', part= 'snippet', id=channel_id)
        response = request.execute()
        return response
    
        3
  •  0
  •   Utkarsh verma    2 年前

    实际上,在python中,当调用函数时混合使用关键字和位置参数时,会出现这个错误。 强文本

    您必须以这样的方式调用函数,即所有位置参数都优先于顺序中的任何关键字参数。

    您可以通过更新下面的函数get_channel_stats来解决这个问题:

    def get_channel_stats (youtube, channel_id):
    request = youtube.channels().list(
            'contentDetails','statistics', part= 'snippet', id=channel_id)
    response = request.execute()
    return response
    

    希望它能解决这个问题。