Python中的module.function()与object.method()。它们是一样的吗?

Python中的module.function()与object.method()。它们是一样的吗?,python,function,oop,object,import,Python,Function,Oop,Object,Import,我是一个Java的家伙,我总是把import关键字看作是导入外部类和方法(包)的命令 在Python中,我看到它略有不同。。。在这里,您可以使用导入从另一个文件添加一些代码和函数,甚至从另一个文件添加一些类 因此,当您要从file.py执行函数时,必须编写: import file file.function() import class object = class() object.method() 如果要从class.py中的类执行方法,必须编写: import file file.f

我是一个Java的家伙,我总是把import关键字看作是导入外部类和方法(包)的命令

在Python中,我看到它略有不同。。。在这里,您可以使用导入从另一个文件添加一些代码和函数,甚至从另一个文件添加一些类

因此,当您要从file.py执行函数时,必须编写:

import file
file.function()
import class
object = class()
object.method()
如果要从class.py中的类执行方法,必须编写:

import file
file.function()
import class
object = class()
object.method()
我的java小脑袋不明白为什么它们有相同的语法这是否意味着,当您使用某些函数创建外部文件时,您正在不知不觉地创建一个对象?

或者python团队刚刚对两个不同的作用域使用了相同的关键字和语法


抱歉,如果我写了一些不正确的概念,我只是想简单地解释一下

导入模块时,它会添加到程序
符号表中
。符号表是一个
dict
,它存储有关当前程序/文件的必要信息,并由编译器使用。为了说明这一点,我们可以创建两个单独的文件:

# main.py

import file
main.py
中,当您说
import file
时,将创建一个单独的名称空间,并将其添加到
main.py
的本地符号表中。这就是语法中必须使用
file.x
file.func()
的原因。要查看本地符号表,请在
main.py
中写入
print(locals())
。如前所述,符号表是一个字典。这意味着您可以通过键访问符号表中的元素。例如,在
main.py
中:

print(locals()['file'])

# <module 'file' from 'path/to/file.py'>
正如您可能猜到的,
x
被添加到
main.py
的本地符号表中。现在,您不必使用
file.x
来访问它-事实上,这将抛出一个错误,因为编译器不知道
file
是什么

print(x)

# 25

模块和类是完全不同的。关于类和模块之间的差异的详细解释已发布。

导入模块时,它将添加到程序
符号表中。符号表是一个
dict
,它存储有关当前程序/文件的必要信息,并由编译器使用。为了说明这一点,我们可以创建两个单独的文件:

# main.py

import file
main.py
中,当您说
import file
时,将创建一个单独的名称空间,并将其添加到
main.py
的本地符号表中。这就是语法中必须使用
file.x
file.func()
的原因。要查看本地符号表,请在
main.py
中写入
print(locals())
。如前所述,符号表是一个字典。这意味着您可以通过键访问符号表中的元素。例如,在
main.py
中:

print(locals()['file'])

# <module 'file' from 'path/to/file.py'>
正如您可能猜到的,
x
被添加到
main.py
的本地符号表中。现在,您不必使用
file.x
来访问它-事实上,这将抛出一个错误,因为编译器不知道
file
是什么

print(x)

# 25
模块和类是完全不同的。文章对类和模块之间的差异进行了很好的解释