簡體   English   中英

如何更好地重構這個 python 腳本?

[英]How can I refactor this python script better?

我應該確保編寫代碼時沒有不必要的代碼行。 有沒有辦法重構它並獲得相同的 output?

def format_name(first_name, last_name):
    if len(first_name) > 0 and len(last_name) > 0:
        return("Name: " + last_name + ", " + first_name)
    elif len(first_name) > 0 or len(last_name) > 0:
        return("Name: " + first_name + last_name)
    else:
        empty_string = ""
        return empty_string
    return string 


print(format_name("Ernest", "Hemingway"))
# Should return the string "Name: Hemingway, Ernest"

print(format_name("", "Madonna"))
# Should return the string "Name: Madonna"

print(format_name("Voltaire", ""))
# Should return the string "Name: Voltaire"

print(format_name("", ""))
# Should return an empty string

在沒有“太高爾夫球”的情況下,這應該可以解決問題:

def format_name(first_name, last_name):
    name = f"{first_name}, {last_name}".strip(", ")
    return f"Name: {name}" if name else ""

重構方法嘗試在單個if條件中分配 function 的邏輯。

def format_name(first_name, last_name):
    result = ''
    sep = ', ' if first_name and last_name else ' '
    
    if first_name or last_name:
        result = last_name + sep + first_name
        result = 'Name: ' + result.strip()
        
    return result
        
print(format_name("Ernest", "Hemingway")) # "Name: Hemingway, Ernest"
print(format_name("", "Madonna")) # "Name: Madonna"
print(format_name("Voltaire", "")) # "Name: Voltaire"
print(format_name("", "")) # `empty_string`

使用str.joinfilter構建名稱字符串:

def format_name(first_name, last_name):
    full_name = ", ".join(filter(None, (last_name, first_name)))
    if full_name:
        full_name = "Name: " + full_name
    return full_name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM