微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于在Python中导入的困惑

如何解决关于在Python中导入的困惑

作为一个初学者,我在使用Python导入时遇到了一些麻烦。

说有一个名为testmodule.py的模块,例如这样,它包含一个类,方法和另一个函数

class student:
    def __init__ (self,n,a,s):
        self.name = n
        self.age = a
        self.score = s

    def ratio (self):
        return self.age / self.score


def multiply (x):
    return x * 10

现在我将其导入到我的新脚本中:

from testmodule import student
from testmodule import multiply

S1 = student("joe",33,98) #instance of the student Class defined in testmodule

S1.ratio() #method defined in the student Class defined in testmodule

multiply(10) #another function defined in testmodule,outside of the student Class

当我阅读其他人的代码时,我会迷失的是,我常常很难确定何时以及为什么某些项作为函数方法,类运行。
根据我所包含的示例,在我看来,尽管使用的是与X import Y相同的语法,但是在此时要导入的是类还是函数之间没有明显的区别。

感谢您提供任何建议来帮助我解决这个问题。

解决方法

我经常很难确定何时以及为什么某些项作为函数,方法,类运行。

术语:“项目”的意思似乎是名称标识符。他们不是“奔跑”。他们引用命名一个函数,方法,类等。

从根本上说,当您导入显示的代码时,导入的student引用类的原因是在导入的模块中将其定义为这样的。其他人的代码也是如此:事物就是它们的定义。

但是我认为您实际上是想问的一个问题,是您如何知道该名称是指函数,类还是其他名称。有多种可能性:

  1. 您可以阅读文档-这就是它的用途。

  2. 您可以检查代码(如果可用)。

  3. 您可以依靠惯例:我们更愿意为类LikeThis和函数like_this命名。 (您将知道什么时候是一种方法,因为您必须作为类Student.ratio或该类实例s1.ratio属性来访问它。 )

目前尚无明显区别

的确。这是有意的(在其他情况下,我也无法想到其他任何一种会引起区别的语言)。在Python中,我们有东西( objects )和 names (也许您已经看到了名为NameError的异常?一切都是对象-包括类本身,函数,方法和模块

,

通常,惯例是类名以大写字母开头,函数以小写字母开头。在您的情况下,学生班级应定义为:-

class Student:
   def __init__(self):
          pass
,

好吧,通常类名应使用CamelCase并根据PEP8以大写字母开头。 函数和变量应为蛇形。例如do_this()

但是,您是对的,如果它们不遵循正确的命名约定,则很难判断是将某些内容作为函数或类导入了。随着时间的推移,它变得越来越容易,希望编写代码的人为其功能和类使用一些描述性名称。

如果我看到from module import student,即使学生不是大写字母,也有可能因为学生是名词而成为一堂课。反之亦然,如果我看到from module import DownloadFile,尽管命名约定错误,这可能还是一个函数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。