有没有可能像return一样一次产生两个东西?
Is it possible to yield two things at a time just like return?
def foo(choice):
for i in limit:
d1 = doSomeCalc()
d2 = doSomeOtherCalc()
if choice == "stuff":
yield {
d1 : "value"
}
else:
yield {
d2 : "Othervalue"
}
我有一个功能,yield
根据用户的选择提供两种类型的词典
def bar():
for i in limit:
d1 = doSomeCalc()
d2 = doSomeOtherCalc()
return {d1 : "value"}, {d2 : "Othervalue"}
a,b = bar() // when function returns two dictionaries
就像return
一样,我可以使用yield
一次给两个不同的词典吗?我将如何获得每个值?
我现在不想在函数中保留 if-else
。
您一次只能生成一个值。迭代生成器将依次产生每个值。
def foo():
yield 1
yield 2
for i in foo():
print i
和往常一样,该值可以是一个元组。
def foo():
yield 1, 2
for i in foo():
print i
另一种方法是生成类似字典的数据结构,如下所示:
def create_acct_and_tbl():
yield {'acct_id': 4, 'tbl_name': 'new_table_name'}
def test_acct_can_access():
rslt = create_acct_and_tbl
print(str(rslt['acct_id']), rslt['tbl_name'])
def foo(choice):
for i in limit:
d1 = doSomeCalc()
d2 = doSomeOtherCalc()
if choice == "stuff":
yield {
d1 : "value"
}
else:
yield {
d2 : "Othervalue"
}
我有一个功能,yield
根据用户的选择提供两种类型的词典
def bar():
for i in limit:
d1 = doSomeCalc()
d2 = doSomeOtherCalc()
return {d1 : "value"}, {d2 : "Othervalue"}
a,b = bar() // when function returns two dictionaries
就像return
一样,我可以使用yield
一次给两个不同的词典吗?我将如何获得每个值?
我现在不想在函数中保留 if-else
。
您一次只能生成一个值。迭代生成器将依次产生每个值。
def foo():
yield 1
yield 2
for i in foo():
print i
和往常一样,该值可以是一个元组。
def foo():
yield 1, 2
for i in foo():
print i
另一种方法是生成类似字典的数据结构,如下所示:
def create_acct_and_tbl():
yield {'acct_id': 4, 'tbl_name': 'new_table_name'}
def test_acct_can_access():
rslt = create_acct_and_tbl
print(str(rslt['acct_id']), rslt['tbl_name'])