复杂代码请问如何理解

第二行不understand,可以拆分1下吗,或者解释也行

def decodeMorse(morse_code):
    return ' '.join(''.join(MORSE_CODE[letter] for letter in word.split(' ')) for word in morse_code.strip().split('   '))
print(decodeMorse('.... . -.--   .--- ..- -.. .'))

得,老朋友了。
原代码等价于:

def decodeMorse(morse_code):
    str=""
    for word in morse_code.strip().split('   ')): # 将摩斯电码中三个空格认为是分割单词的标志,并用此分割出代码单词的摩斯字符串
        for letter in word.split(' '): # 对于上次分割出的单词,认为一个空格是字母之间的分割标志,并用此分出代表字母的摩斯字符串
            str+=MORSE_CODE[letter] # MORSE_CODE应该是一个字典,key为电码的字符串,值为串对应的字母,这样通过MORSE_CODE[电码字符串]就能得到对应的字母
    return str
print(decodeMorse('.... . -.--   .--- ..- -.. .'))

顺便一提,这里运用的语法是生成器(generator)表达式,类似于列表解析。
语法为(表达式 for 迭代变量 in 可迭代对象),该表达式返回一个生成器(可以认为是可迭代对象)
而join()函数接受的参数是一个sequence,可以看到,原代码中的表达式返回的是可迭代的字符串,这是序列(sequence)的一种,所以可以用生成器表达式简化循环

缺少参数:MORSE_CODE