我可以为模块中的变量赋值吗?如果是,类和模块之间有什么区别。 PS:我是一个java的家伙。如果它有助于解释。谢谢。Python中模块和类之间的区别
回答
还有巨大的 Python中的类和模块之间的差异。
类是允许您创建具有属性和绑定功能的实例的蓝图。类支持继承,元类和描述符。
模块不能做任何的这个,模块基本上单实例内部module
类,他们所有的全局都在module
实例属性。您可以根据需要操作这些属性(添加,删除和更新),但要考虑到这些仍然构成该模块中定义的所有代码的全局名称空间。
从Java的角度来看,类在这里并不完全不同。然而,模块可以包含多于一个类;函数和任何其他Python表达式的结果也可以是模块中的全局变量。
所以作为一般看球指南:
- 使用类作为蓝图该模型的问题域的对象。
- 使用模块将功能收集到逻辑单元中。
然后将数据存储在对您的应用程序有意义的位置。全局状态进入模块(并且函数和类同样是全局状态,在开始时加载)。其他一切都进入其他数据结构,包括类的实例。
我可以为模块中的变量赋值吗?
总之是的。
的module
的概念指的是可以导入一个Python文件(通过导入,您有访问该模块中定义的变量/方法/类)。
它通常与package
这个概念一起讨论,它是__init__.py
的文件夹。一个包可以包含子包或模块,同时,与模块类似,可以在其__init__.py
中定义要导入的变量/方法/类。
在Python中使用模块/包的目的与在Java中使用包类似:包含和分类可重用代码,解决命名冲突等。
此外,巨蟒也有一个名为module
一个内建类,就像list
,tuple
,dict
(请注意,Python的内置类不遵循CapWords命名约定由于遗留原因)。 A module
实例表示导入的模块/包。
当您使用import
语句导入模块(单Python的文件)或包(带__init__.py
文件夹),通常
1. module
类的新实例将被创建
2.类/方法/您在该导入的Python文件中定义的变量将作为此module
实例的属性添加(如果它是一个包,它将添加在__init__.py
中定义的类/方法/变量)。
因此,因为它只是module
类的一个实例,所以可以为该实例的属性和其他类实例操作分配一个值。
import math
print(type([1,2,3]))
print(type(math))
print(dir([1,2,3]))
print(dir(math))
控制台:
<class 'list'>
<class 'module'>
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
- 1. Python日期时间和时间模块之间的区别
- 2. 模块和封闭之间的区别
- 3. 扩展和模块之间的区别?
- 4. Python zipfile模块:zipfile.ZIP_DEFLATED和zipfile.ZIP_STORED之间的区别
- 5. 角度2模块和Javascript ES6模块之间的区别
- 6. 加载模块和初始化模块之间的区别?
- 7. “传统contao模块”和(仅)“contao模块”之间的区别
- 8. python中的[]和[,,]之间的区别
- 9. Azure AD模块和MS Online模块之间有什么区别
- 10. 错误处理模块中的Resume和Goto之间的区别
- 11. SPFile和PublishingPage类别之间的区别
- 12. Java EE中动态Web模块3.0和2.5之间的区别?
- 13. 重新模块中的组和组之间有什么区别?
- 14. Fortran中INCLUDE和模块之间的区别
- 15. Nancy中应用程序和模块管道之间的区别?
- 16. Python中的“无模块命名”和“无法导入名称”之间的区别
- 17. vTiger中的实体模块和扩展模块之间的区别
- 18. Python与模块实现之间的区别对比Java
- 19. APIView类和viewsets类之间的区别?
- 20. 类和类之间的区别<?>
- 21. Pattern类和Matcher类之间的区别
- 22. Python - os.access和os.path.exists之间的区别?
- 23. basetring和types.StringType之间的python区别?
- 24. android sha224和python之间的区别sha224
- 25. python tkinter spinbox和optionmenu之间的区别
- 26. Python:!=和“不是”之间的区别
- 27. Python 3.5 - '//'和'int()'之间的区别
- 28. memcache和python字典之间的区别
- 29. Python之间的区别urllib.urlretrieve()和wget
- 30. Smalltalk和python之间的区别?
在Python模块,类,元类,等都是**所有对象**为好。您可以设置模块的参数。不同的是,一个类以'__init__'等特殊方式成形,等等。 –
好吧,几乎是第一眼的区别:模块==文件,类==文件的一部分。然而,在Java中,人们倾向于(或者说被迫更好地说)每个文件结构都有一个类。否则,您可以这样做:'import time; time.my_variable = 1',然后您可以在范围内使用它。 – KeyWeeUsr
您无法创建模块的实例。模块是* singletons *,只有一个副本存在。另一方面,您可以创建类的实例。这在Java *中没有什么不同。类支持继承,模块不支持。类支持元类,模块不支持。类支持描述符,模块不支持。 –