首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从`foo.py`导入和从Python` `foo/__init__.py`导入有什么区别

foo.py导入和从Python foo/__init__.py导入的区别在于导入的对象和导入方式。

  1. foo.py导入:
    • 导入的是foo.py文件中定义的对象或模块。
    • 导入方式可以是直接导入整个模块,例如import foo,或者导入模块中的特定对象,例如from foo import bar
    • 这种导入方式适用于导入单个Python文件或模块。
  • 从Python foo/__init__.py导入:
    • 导入的是foo包(package)中定义的对象或模块。
    • 导入方式可以是直接导入整个包,例如import foo,或者导入包中的特定模块或对象,例如from foo import bar
    • 这种导入方式适用于导入包中的模块或对象。

区别总结:

  • foo.py导入适用于导入单个Python文件或模块。
  • foo/__init__.py导入适用于导入包中的模块或对象。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云函数(SCF):https://cloud.tencent.com/product/scf
  • 云数据库 MySQL 版(CMYSQL):https://cloud.tencent.com/product/cmysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(TBC):https://cloud.tencent.com/product/tbc
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

深入Python(2): __init__.py 用法

原文:http://www.2cto.com/kf/201204/129388.html python的每个模块的包中,都有一个__init__.py文件,了这个文件,我们才能导入这个目录下的...那么,__init__.py还有什么别的功能呢? 其实,__init__.py里面还是可以内容的,我们在导入一个包时,实际上导入了它的__init__.py文件。...我们有时会使出一招“全部导入”,也就是这样: from PackageName import * 这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块子包导入到当前作用域中来...比如: #文件 __init__.py __all__ = ["Module1", "Module2", "subPackage1", "subPackage2"] 如:在一个包里foo.py...、__init__.py #__init__.py import os import datetime #foo.py from __init__ import * print datetime.datetime.now

82310
  • Python菜鸟到高手(4):导入Py

    Python代码中导入模块需要使用import语句,语法结构如下: import module_name   引用模块中函数的语法如下: module_name.function_name   如果在...Python程序中大量使用模块中的某些函数,那么每次在调用函数时都要加上“模块名”显得有些麻烦,所以在这种情况下,可以使用from…import…语句将模块中的函数直接暴露出来。...from module_name import *   另外,importfrom…import…语句可以写在Python代码中的任何位置,但一定要在引用相应模块函数之前执行import或from…import...下面的代码使用importfrom…import…语句分别引用了math模块math模块中的sqrt函数。...print("importfrom...import...演示") # 导入math模块 import math print(math.floor(20.6)) # 导入math模块中的sqrt函数

    60710

    Python模块】- 如何导入使用模块?模块导入方式哪些?

    的方式使用模块提供的工具 ——全局变量、函数、类3.导入模块后使用工具代码示例首先先准备两个模块,md_01_测试模块1 md_02_测试模块2,然后在demo文件中导入模块并使用工具。...测试模块文件代码内容如下截图:在demo文件中使用模块中的函数类——代码如下:# 导入两个模块import md_01_测试模块1import md_02_测试模块2# 使用模块中类创建对象a = md.../别名.访问如果希望某一个模块中导入部分工具,就可以使用from...import的方式1.导入局部工具语法:# 模块导入某一个工具from 模块名1 import 工具名2.使用方式不需要通过 模块名...:# 模块导入所有工具from 模块名1 import *注意:这种方式不推荐使用,因为函数重名并没有任何的提示,一旦出现问题不好排查使用工具方式:直接使用,不用 模块名....,单单从代码上不好排查,如图更多关于Python基础教程进阶知识都可以去Python自学网学习,还有Python学习路线讲解。

    3.2K20

    页面导入样式时,使用link@import什么区别

    link@import什么区别 区别1:link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS。...在html设计制作中,css四种引入方式。 方式一: 内联样式 内联样式,也叫行内样式,指的是直接在 HTML 标签中的 style 属性中添加 CSS。...方式四:导入样式 导入方式指的是使用 CSS 规则引入外部 CSS 文件。...charset "utf-8"; @import url(style.css); *{ margin:0; padding:0;} .notice-link a{ color:#999;} 比较链接方式导入方式...链接方式(下面用 link 代替)导入方式(下面用 @import 代替)都是引入外部的 CSS 文件的方式,下面我们来比较这两种方式,并且说明为什么不推荐使用 @import。

    4.1K20

    解决python3中关于import的疑难杂症

    简介 在Python中import的常用操作为: import somemodule # 导入整个模块 from somemodule import somefunction # 模块中导入单个函数...from somemodule import firstfunc, secondfunc, thirdfunc # 模块中导入多个函数 from somemodule import * # 模块中导入所有函数...绝对导入与相对导入 绝对导入相对导入的概念只针对于包内模块导入包内模块,注意如果foo.pybar.py在同一个非包(没有__init__.py文件)的目录下,那么它们之间可以互相import,不存在绝对导入相对导入的问题...# 方法三: from mypackage import module_foo import mypackage.module_foo 对于python2而言,方法一方法二都是相对导入,效果一样,...包导入 包的导入模块导入基本一致,只不过导入包时会执行__init__.py

    1.7K30

    零学习python 】34.Python模块的导入使用方法详解

    Python中的模块 在Python中有一个概念叫做模块(module)。...使用 import random 导入工具之后,就可以使用 random 的函数。 导入模块 1....导入模块五种方式 import 模块名 from 模块名 import 功能名 from 模块名 import * import 模块名 as 别名 from 模块名 import 功能名 as 别名...2. import 在Python中用关键字import来引入某个模块,比如要引入系统模块 math,就可以在文件最开始的地方用import math来引入。...# 导入方法时设置别名 sp(1) # 使用别名才能调用方法 当一个模块很长,我们只需要其中的某个函数,但函数名比较长或者不够直观,这时可以使用as关键字为函数设置别名,使得函数的调用更加方便简洁

    24810

    4.模块与包

    事实上函数定义也是“被执行”的语句,模块级别函数定义的执行将函数名放 入模块全局名称空间表,用globals()可以查看 #3.创建名字tbjx来引用该命名空间 这个名字变量名没什么区别...egg文件,python会把.zip归档文件当成一个目录去处理, #首先制作归档文件:zip module.zip foo.py bar.py import sys sys.path.append(...使用C编写的共享库扩展块无法直接.zip文件中加载(此时setuptools等打包系统有时能提供一种规避方法),且.zip中加载文件不会创建.pyc或者.pyo文件,因此一定要事先创建他们,来避免加载模块是性能下降.../spam.pyc sh-3.2# python3 spam.pyc spam #提示: 1.模块名区分大小写,foo.pyFOO.py代表的是两个模块 2.你可以使用-O或者-OO转换python...#2、import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py导入包本质就是在导入该文件 #3、包A包B下有同名模块也不会冲突

    79520

    零学习python 】38.Python包的使用及导入方式

    包的使用 一个模块就是一个 py 文件,在 Python 里为了对模块分类管理,就需要划分不同的文件夹。...多个联系的模块可以将其放到同一个文件夹下,为了称呼方便,一般把 Python 里的一个代码文件夹称为一个包。 1....from newmsg import sendmsg 使用__init__.py文件,导入包里的指定模块。 可以在newmsg里创建__init__.py文件,在该文件里导入指定的内容。...__.py文件里没有导入这个模块 使用__init__.py文件,结合__all__属性,导入包里的所有模块。...2. init.py文件什么用 init.py 控制着包的导入行为。init.py为空仅仅是把这个包导入,不会导入包中的模块。可以在__init__.py文件中编写内容。

    13010

    python模块

    ,假设有两个模块xmlreader.pycsvreader.py,它们都定义了函数read_data(filename):用来文件中读取一些数据,但采用不同的输入格式。...3.2.5 考虑到性能的原因,每个模块只被导入一次,放入字典sys.module中,如果你改变了模块的内容,你必须重启程序,python不支持重新加载或卸载之前导入的模块, 有的同学可能会想到直接sys.module...egg文件,python会把.zip归档文件当成一个目录去处理, 1 #首先制作归档文件:zip module.zip foo.py bar.py 2 3 import sys 4 sys.path.append...使用C编写的共享库扩展块无法直接.zip文件中加载(此时setuptools等打包系统有时能提供一种规避方法),且.zip中加载文件不会创建.pyc或者.pyo文件,因此一定要事先创建他们,来避免加载模块是性能下降...提示: 1.模块名区分大小写,foo.pyFOO.py代表的是两个模块 2.你可以使用-O或者-OO转换python命令来减少编译模块的大小 1 -O转换会帮你去掉assert语句 2 -OO转换会帮你去掉

    1.4K10

    import导入第三方库或者模块

    python中可以import的modulepackage: 1、module 模块 通常模块为一个文件,直接使用 import 文件名 就可以导入。...2、package 包 通常包总是一个目录,包目录下需要有一个名为 __init__.py的文件。可以使用import导入包,或者from + import来导入包中的部分模块。...包中可以模块文件子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。...python 解释器在执行到这一行时会做如下事情: 1)、为people.py中定义的对象创建一个命名空间,通过这个命名空间可以方位代码中的函数变量 2)、在命名空间中执行代码。...代表模块中除下划线开头的所有对象: from socket import gethostname, socket from socket import * # 载入所有对象到当前名字空间 # module: foo.py

    1.6K50

    导入Python模块执行了所有代码,你不知道__name__变量是什么意思吗?

    让我们先使用一段代码示例来探索导入脚本的工作方式。假设这些代码位于名为foo.py的文件中。...如果将Python脚本文件作为主程序运行,也就是通过下面的命令运行foo.py。...__name__ = "__main__" 另一方面,假设其他模块是主程序,并且它将导入foo.py。...这样就会调用functionAfunctionB函数,从而输出 "Function A" "Function B 10.0" 如果foo.py脚本不是作为主程序运行,而是被另一个程序导入,则__name...其实是不会的,因为Python解析器缓存,如果一个模块在当前模块中已经被导入了,当第二次导入时,将不会再次执行被导入模块的代码,而是直接使用缓存中的内容,所以import foo3只会导致foo3.py

    1.4K20

    python3--模块包,软件开发规范

    python解释器在以下两种情况下不检测缓存 1 如果是在命令行中被直接导入模块,则按照这种方式,每次导入都会重新编译,并且不会存储编译后的结果(python3.3以前的版本应该是这样) python...-m my_module.py 2 如果源文件不存在,那么缓存的结果也不会被使用,如果想在没有源文件的情况下来使用编译后的结果,则编译后的结果必须在源目录下 提示: 1.模块名区分大小写,foo.py与...FOO.py代表的是两个模块 2.你可以使用-O或者-OO转换python命令来减少编译模块的大小 -O转换会帮你去掉assert语句 -OO转换会帮你去掉assert语句__doc__文档字符串 由于一些程序可能依赖于...policy.get() 执行结果 执行了glance下的__init__.py文件 from policy.py 绝对导入相对导入 我们的最顶级包glance是写给别人用的,然后在glance包内部也会有彼此之间互相导入的需求...分析: 此时我们导入versions在versions.py中执行 import policy需要找sys.path也就是当前目录找policy.py,这必然是找不到的 绝对路径导入方式 所有的导入都写在对应的目录下的

    68320

    Python程序员最常犯的10个错误,你中招了吗?

    原因上一个案例中出现的问题相似,但这里的错误更加细微。函数foo1没有对变量lst进行赋值操作,而函数foo2赋值操作。...常见错误7:模块之间出现循环依赖 假设你两个文件,分别是a.pyb.py,两者相互导入,如下所示: a.py模块中的代码: import b def f(): return b.x print...常见错误9:不熟悉Python2Python3之间的差异 先来看看foo.py文件中的代码: import sys def bar(i): if i == 1: raise KeyError...2中,上述代码运行正常 $ python foo.py 1 key error 1 $ python foo.py 2 value error 2 但是在Python 3中运行时: $ python3...中运行代码: $ python3 foo.py 1 key error 1 $ python3 foo.py 2 value error 2 问题解决了!

    1K10
    领券