基本的python用法,调用一个函数

时间:2016-10-10 23:12:09

标签: python

我正在研究leetcode但实际上从未在本地写过文件。

class Solution(object):
    def singleNumber(self, nums):

        for i in range(0,len(nums),2):
            if (i != len(nums) - 1) and (nums[i] != nums[i+1]):
                print (nums[i])
            elif i == len(nums) - 1:
                print (nums[i])

    def main():
        nums=[1,1,2,2,3]
        s=Solution()
        s.singleNumber(nums)
        print('done')

我正在运行此脚本,但没有看到任何输出,也无法理解我做错了什么。

2 个答案:

答案 0 :(得分:2)

main 函数移到类之外,然后专门执行它:

class Solution(object):
    def singleNumber(self, nums):

        for i in range(0,len(nums),2):
            if (i != len(nums) - 1) and (nums[i] != nums[i+1]):
                print (nums[i])
            elif i == len(nums) - 1:
                print (nums[i])

def main():
    nums=[1,1,2,2,3]
    s=Solution()
    s.singleNumber(nums)
    print('done')

main()

输出:

3
done

另一种可能性是将它作为一个单独的函数:删除 def main 行,取消缩进该代码的四行,然后从顶层运行它。

答案 1 :(得分:2)

与许多其他编程语言(如Java)不同,Python不需要main方法在类中。更重要的是,Python 不需要定义main方法:它将整个文件作为应用程序运行。在您的原始帖子中,Python执行以下操作:

  • 将方法singleNumber定义为它所拥有的代码。
  • 将方法main定义为它所拥有的代码。
  • 将这两种方法保存在课程Solution中。
  • 不再运行任何行,因此终止应用程序。

要使应用程序正确,您必须按如下方式编写它:

class Solution(object):
    def singleNumber(self, nums):
        for i in range(0,len(nums),2):
            if (i != len(nums) - 1) and (nums[i] != nums[i+1]):
                print (nums[i])
            elif i == len(nums) - 1:
                print (nums[i])

if __name__=='__main__':
    nums=[1,1,2,2,3]
    s=Solution()
    s.singleNumber(nums)
    print('done')

你可能想知道为什么行if __name__=='__main__':;每个文件都包含隐式定义的变量__name__,其值取决于您是直接运行文件还是导入文件。在第一种情况下,完成赋值__name__='__main__',在第二种情况下,为__name__变量分配文件本身的名称;这可以让您了解此文件是否为主文件。

您也可以放弃Solution类并将singleNumber方法提升为模块方法。

相关问题