簡體   English   中英

Python-函數未返回打印值

[英]Python - print values not being returned by function

我目前正在學習python,並遇到了以下代碼:

class Simple:
    def __init__(self, str):
        print("Inside the Simple constructor")
        self.s = str
    # Two methods:
    def show(self):
        print(self.s)
    def showMsg(self, msg):
        print(msg + ':',
        self.show()) 

我正在python shell中進行操作,並執行以下操作:

x = Simple("A constructor argument")
x.show()

輸出:

A constructor argument

這對我來說很有意義,但是我隨后輸入:

x.showMsg("A message")

哪個輸出:

A constructor argument
A Message:None

這就是我感到困惑的地方。 當x.Show()產生“構造函數參數”時,為什么對showMsg()中的self.show()的調用導致“ None”? 我以為在創建類實例之前self是一個占位符,這意味着在這種情況下self.show()等同於x.show()?

任何幫助,將不勝感激。

養成讓函數return值的習慣。 沒有return語句的函數默認情況下返回None

這是一個如何重寫程序的示例:

class Simple:
    def __init__(self, str):
        self.s = str
    # Two methods:
    def show(self):
        return self.s
    def showMsg(self, msg):
        return msg + ': ' + self.show()

x = Simple("A constructor argument")

print(x.show())
# A constructor argument

print(x.showMsg('A message'))
# A message: A constructor argument

雖然可以在類中進行print ,但最好是讓類處理邏輯並靈活處理結果(打印結果,將其存儲在列表中,將其傳遞給另一個函數等)。

類中的show()方法所做的只是打印存儲的消息,但是, showMsg試圖通過調用show方法來將某些msg與存儲的msg連接起來,但是,因為show()不返回任何內容,否則返回None ,它會像這樣受到關注,您將不得不將您的方法更改為:

def show(self):
    return self.s

要么

def show(self):
    print(self.s)
    return self.s

在第二種情況下,您將保留這兩種情況的功能,但這是不明智的做法

暫無
暫無

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

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