2013-12-09 48 views
4

我仍然感到困惑在Python殼輸入以下命令時:我感到困惑「n」和印刷之間的差異(「N」)

>>> 'n' 
'n' 
>>> print('n') 
n 

是什麼'n'(第一輸出)是什麼意思?另一個n是什麼意思? Python爲什麼不打印n作爲'n'的輸出與print('n')的輸出相同?

我想print('n')表示:我(Python)的打印n作爲一個字符

那麼怎麼樣的第一個?如果>>> 'n'的含義相同,那爲什麼不打印n呢?

+0

我刪除了對顏色的引用;那些取決於你正在使用的確切的外殼。 IDLE將輸出顏色代碼,標準終端不會。 –

回答

5

您正在運行interactive mode中的python解釋器,其中回聲值返回給您。表達式,並且如果他們返回其他東西比None,解釋確實相當於:

print(repr(result)) 

這是'n'你看到打印。

在另一方面print(),直接寫入到終端輸出,該值轉換爲一個字符串(str()函數的結果之後,但對於一個字符串值,是沒有區別的,因爲它已經字符串目的)。

這與在腳本中運行Python代碼不同;那裏沒有任何提示,如果你只在一行寫上'n',Python解釋器會忽略該行,因爲它不會改變任何狀態。另一方面,print('n')仍然會將字符串寫入控制檯或終端。

交互模式是幫助你找出python表達式,並通過repr()你可以區分不同類型的對象。嘗試在其打印1"1",使一個整數,字符串與數字1

>>> print(1) 
1 
>>> print("1") 
1 

你不能告訴這兩者之間的區別。但他們表示確實不同:

>>> 1 
1 
>>> "1" 
'1' 

交涉對於大多數Python標準類型將使用可以在你的Python代碼被重用的符號,原樣。

+0

是的,我現在明白了,所以'n'與print('n'),'n'不同,因爲輸入意味着Python會打印回顯值,它會打印我們'輸入'的內容,並打印('n')打印n作爲一個角色。 – Yagami

0

它只是回顯你的輸入(一個字符串)。當你print n,它輸出你的字符串的值。

0

如果你把它放在一個.py文件中並從命令行執行它,那麼print('n')會打印一些東西,但只是'n'在一個文件裏面什麼也不做。

交互式提示有點混淆,因爲如果您編寫的表達式的值不是None,則會打印它的表示形式。所以這就是爲什麼'n'在這種情況下打印'n'。但是這是交互式提示所做的,而不是代碼所做的。

0

你應該先了解python中的所有東西都是OBJECT。這意味着'n'是一個對象,當你調用對象'n'的函數時(OBJECT.__str__()),當你調用print時。

class Human: 
    def __init__(self,name,ge,age): 
     self.ge = ge 
     self.age = age 
     self.name = name 
    def __str__(self): 
     print "This is",self.name 
     print "age = ",self.age 
     print "gender = ".self.ge 

boy = Human("Tom", "M", 12) 
print boy