Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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,我创建了一个函数,用于解析子任务问题的JSON文件。根据票证数量,此函数有时返回1行,有时返回更多行,有时不返回任何内容 def subtask(): for issue in data['issues']: for subtask in issue['fields']['subtasks']: if subtask['fields']['summary'] != 'Workspace created': x = subtask['fi

我创建了一个函数,用于解析子任务问题的JSON文件。根据票证数量,此函数有时返回1行,有时返回更多行,有时不返回任何内容

 def subtask():
     for issue in data['issues']:
      for subtask in issue['fields']['subtasks']:
        if subtask['fields']['summary'] != 'Workspace created':
          x = subtask['fields']['summary']
     return x
接下来,我将这个变量的输出传递给
if
block:它只检查函数输出是否包含“Workspace created”以外的单词

subtasks()
函数返回任何值时,它会按预期工作,但如果函数没有输出,则会失败:

UnboundLocalError: local variable 'x' referenced before assignment
如果没有输出,如何为函数指定默认值? 例如,
x=”“
我试过:

def subtask(x=None):
 for issue in data['issues']:
  for subtask in issue['fields']['subtasks']:
    if subtask['fields']['summary'] != 'Workspace created':
      x = subtask['fields']['summary']
    if x is None:
       x = "test"
 return x

但是它会为有或没有摘要字段的票证返回“test”。

问题是,如果条件
if子任务['fields']['summary']!='创建的工作区“:
永远不会变为真,然后
x
未初始化,因此分配前引用的
局部变量“x”的错误

第二个代码的问题与此类似,如果“第一个if-condition”为非真,则“第二个if-condition”没有
x

要解决这个问题,只需在进入循环之前设置
x=None

def subtask():
 x = None # set default value of x here
 for issue in data['issues']:
  for subtask in issue['fields']['subtasks']:
    if subtask['fields']['summary'] != 'Workspace created':
      x = subtask['fields']['summary']
 return x
i简化代码(删除函数)


您的
子任务
函数和
子任务
循环变量正在分类您正在为..中的子任务循环
,这意味着几个子任务?这意味着你的x会不断被改变。我想在某些情况下,它会得到一个
None
。如果只需要第一个子任务,只需执行
返回子任务['fields']['summary']
,而不是分配x。是的,有几个子任务,我要比较
!=根据多个子任务名称子任务['fields']['summary']创建的工作区
。是的,有时它一个子任务也得不到
def subtask():
 x = None # set default value of x here
 for issue in data['issues']:
  for subtask in issue['fields']['subtasks']:
    if subtask['fields']['summary'] != 'Workspace created':
      x = subtask['fields']['summary']
 return x
data = response.json()
    for issue in data['issues']:
       for subtask in issue['fields']['subtasks']:
           s = subtask['fields']['summary']
       if len(issue['fields']['subtasks']) == 0 or subtask['fields']['summary'] != "Workspace created":
           print issue['fields']['description']
           print issue['key']