Python同目录.py调用_不同目录调用_from_import

最近在学习python,顺便把一些基础记录下来,方便日后做查询字典用。

在 python 中导入模块是我们最常用的功能,基本每个.py 文件中都会有 import 或者是 from * import 语句。

一、import的使用

import的语法:

导入某些整个模块:import module[, module1 [...moduleN ] ]

导入包中模块:import package[packageN].module

1、导入单模块:import module

import导入单模块文件后,在import时会执行模块中的代码(从上到下)

2、导入多模块:import module1, module2, module3 ...

引用多个模块时用英文逗号(,)隔开,从美观来说,不如多行import直观,但是执行效率上没有区别。但是一般都会推荐使用上面写法。 

3、导入包中模块:import package.module

import导入包中的模块时,首先会执行包下的__init__.py(可为空)

4、导入包中包的模块:import package1.package2.module

import导入多层包中的模块时,会执行各包下的__init__.py

5、导入包中包:import package1.package2【出错】

二、import as的使用

import as的语法:import module as rename

 使用 import as一般是因为以下原因:

1、避免引用的类名、函数名、属性名重复;

2、可能应用的名字太长了,喜欢缩写或简写;

3、单纯的不喜欢,就是想换个名字;

三、from import的使用

from import语法:

从某包中导入模块:from package1.package2 import module

从模块中导入函数:from module import funcname1,[funcname2..[funcname3...]]

从包的模块中导入函数:from package.module import funcname

1、 从包中包导入模块:from package1.package2 import module

 from 包 import module时,受__init__.py中的__all__影响,没有列出来的模块是没法导入引用的。

2、从模块中导入函数:from module import funcname

 建议是尽量少用该方法,用import代替。

# a.py
def add():
    print('hello_1')

# b.py
def add()
    print('hello_2')

# c.py
from a import add
from b import add

add() #执行结果是:hello_2

a、b都有add()函数,第二个from import 会覆盖掉第一个,使用了第二个add函数。

3、从包中导入模块:from package import module

尽量避免使用from * import xx的写法,from * 很容易导致命名冲突,检查起来费时耗力。

四、__import()__的使用

__import__() 函数用于动态加载类和函数 。

如果一个模块经常变化就可以使用 __import__() 来动态载入。

语法:__import__(name[, globals[, locals[, fromlist[, level]]]])

 name:指的是模块名。

下面举个例子看下__import()__如何使用:

# a.py
import os  
 
print ('在 a.py 文件中 %s' % id(os))
# run.py 
import sys  
__import__('a')        # 导入 a.py 模块

 运行run.py后,结果是:在 a.py 文件中 4394716136

五、同目录下的.py文件调用

最近在学习selenium的时候,封装了一个修改元素属性的函数文件,但是从同目录下调用会有报错提示:ModuleNotFoundError: No module named xxx

Python同目录.py调用_不同目录调用_from_import_第1张图片Python同目录.py调用_不同目录调用_from_import_第2张图片

已经是同目录下了,为什么还是调用失败呢,文件是存在的,后来检查后发现还需要将最原始目录设置为 源代码根目录 才行。

下面说下如何修改:

鼠标右键根目录:mark directory as(将目录标记为),然后Sources Root(源代码根目录)。

相当于在系统路径中加入根目录,当import时,就会从根目录检索文件,从而找到需要的内容。

下面是使用pycharm的操作截图,其他工具都差不多:

Python同目录.py调用_不同目录调用_from_import_第3张图片

六、不同目录下的.py文件调用

1、首先第1步跟上面(五、同目录下文件调用)方法一样的,先把最初目录设置为根目录。

2、建立__init__.py文件

__init__.py是用来定义模块包,如果想调用目录下的模块,就要创建__init__.py文件。

因为是临时写的测试,这里暂时留空白即可。

Python同目录.py调用_不同目录调用_from_import_第4张图片

3、调用package里面的模块a

# a.py
def sayHello():
    print('hello world')

# b.py
from package import a

a.sayHello()

你可能感兴趣的:(python基础,python,pycharm)