2010-10-17 28 views
12

Đó là ngày 1 của tôi về python học tập. vì vậy nó là một câu hỏi noob cho nhiều bạn. Xem đoạn mã sau:Không có đầu ra thêm trong khi in đối số dòng lệnh

#!/usr/bin/env python 

import sys 

def hello(name): 
    name = name + '!!!!' 
    print 'hello', name 

def main(): 
    print hello(sys.argv[1]) 


if __name__ == '__main__': 
    main() 

khi tôi chạy nó

$ ./Python-1.py alice 
hello alice!!!! 
None 

Bây giờ, tôi có hiểu biết rắc rối nơi "None" này đến từ đâu?

Trả lời

21

Đếm số lượng print câu lệnh trong mã của bạn. Bạn sẽ thấy rằng bạn đang in "hello alice!!!" trong hàm hello, in kết quả của hàm hello. Bởi vì hàm hello không trả về một giá trị (mà bạn muốn làm với câu lệnh return), nó kết thúc trả về đối tượng None. print của bạn bên trong chức năng main sẽ kết thúc in None.

+0

Cảm ơn rất nhiều về phản hồi cực nhanh và giải thích chi tiết. Tôi đã hiểu những gì bạn nói. – CuriousMind

4

Thay đổi của bạn

def main(): 
    print hello(sys.argv[1]) 

để

def main(): 
    hello(sys.argv[1]) 

Bạn đang in rõ ràng giá trị trả về từ phương pháp chào bạn. Vì bạn không có giá trị trả về được chỉ định, nó trả về None là những gì bạn thấy trong đầu ra.

+0

Cảm ơn bạn rất nhiều! – CuriousMind

Các vấn đề liên quan