python的返回值


                    今天在试验>上的例程,发现了一个小问题,列举如下:

下面是创建的一个类
#! /usr/bin/python
# FileName:    time1.py
# Description: Simple definition of class Time
# Author:      yk
# Date:        Sat May 17 04:07:34 CST 2008
class Time:
    """Time abstract definition of class Time."""
    def __init__( self ):
        """Initializes hour,minute and second to zero"""
        self.hour = 0
        self.minute = 0
        self.second = 0
    def printMilitary( self ):
        """Prints object of class Time in military format"""
        
        print "%.2d:%.2d:%.2d" % ( self.hour,self.minute,self.second )
    def printStandard( self ):
        """Prints object of class Time in standard format"""
        standardTime = ""
        if self.hour == 0 or self.hour == 12:
            standardTime += "12:"
        else:
            standardTime += "%d:" % ( self.hour )
        standardTime += "%.2d:%.2d" % ( self.minute,self.second )
        if self.hour  12:
            standardTime += "AM"
        else:
            standardTime += "PM"
        print standardTime
下面是测试这个类的一个小程序
#! /usr/bin/python
# FileName:    t702.py
# Description: Creating and manipulating objects of class Time.
# Author:      yk
# Date:        Sat May 17 04:25:03 CST 2008
from time1 import Time
time = Time()
print "The attributes of time are: "
print "time1.hour:",time.hour
print "time1.minute:",time.minute
print "time1.second:",time.second
print "\nCalling method printMilitary:",
time.printMilitary()
print "\nCalling method printStandard:",
time.printStandard()
print "\n\nChanging time1's hour attribute..."
time.hour = 25
print "Calling method printMilitary after alteration:",
time.printMilitary()
当程序如上所示的时候,程序的输出为:
The attributes of time are:
time1.hour: 0
time1.minute: 0
time1.second: 0
Calling method printMilitary: 00:00:00
Calling method printStandard: 12:00:00AM
Changing time1
但是,如果把类的函数放在print语句的同一行的时候,如把下边的语句
print "\nCalling method printMilitary:",
time.printMilitary()
改为
print "\nCalling method printMilitary:",time.printMilitary()

后,程序的输出如下所示:
The attributes of time are:
time1.hour: 0
time1.minute: 0
time1.second: 0
Calling method printMilitary: 00:00:00
None
Calling method printStandard: 12:00:00AM
None
Changing time1's hour attribute...
Calling method printMilitary after alteration: 25:00:00
None
    在网上查了一下,有如下的说明,在PYTHON中,函数没有定义返回的数据类型。Python 不需要指定返回值的数据类型;甚至不需要指定是否有返回值。实际上,每个 Python 函数都返回一个值;如果函数执行过 return 语句,它将返回指定的值,否则将返回 None (Python 的空值)
   
    但是,我现在还是不明白,为什么换行的话就不输出None。