广告
返回顶部
首页 > 资讯 > 后端开发 > Python >【python】import的用法总结
  • 363
分享到

【python】import的用法总结

python深度学习 2023-09-02 15:09:20 363人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

import用法总结 一、直接引入二、from 模块/包 import 模块/函数1.直接引入模块2.引入模块中的所有函数3.引入模块中的指定函数4.相对引用在B_2.py 中引用A.py 中

import用法总结


ImportError: attempted relative import with no known parent package
因为报错,决定整理一下import用法,做个笔记


一、直接引入

import modulename [as alias]
import 模块名,这时python可以引入以下两种模块; 举例如下:

  • 我们安装好的模块;(其实就是在环境变量路径下的模块;)
  • 运行文件所在目录下的文件;(这里我们推荐用 from. import 模块名的方式)
import os,sys   # 模块间用,隔开,可以引用多个;import pandas as pd    # 这是给模块一个别名,方便后续使用import random    # 所有安装的第三方模块,都可以直接引入import F1    # 这里F1 就是与运行的py文件同一级的模块或者包,在后面详细介绍;

二、from 模块/包 import 模块/函数

from modelname import member
参数说明如下:
modelname:模块名称,区分字母大小写,需要和定义模块时设置的模块名称的大小写保持致。
member:用于指定要导入的变量、函数或者类等。可以同时导入多个定义,各个定义之间使用逗号“,”分隔。如果想导入全部定义,也可以使用通配符星号“*”代替。

1.直接引入模块

import 模块名:这种方式引入模块时,使用模块内的函数,需要使用模块.函数名的方式来调用函数

import random    # 直接引用时print(random.randint())    # 想要调用random包中的函数,需要使用 random.函数名 的方式来调用,不能直接调用

2.引入模块中的所有函数

from 模块名 import * : 这种方式引入模块时,可以直接使用函数

from random import *    # 这种方式是将所有random 包中的内容全部导入进来了,print(randint())    # 这时候的函数可以直接引用,不再需要 random.函数名 来使用了;

3.引入模块中的指定函数

上面的方式引入了包内所有的函数,有时我们只会用其中一个或几个函数,这时候 我们可以使用以下方式: from random import random,randint

from random import random,randint     # 指定引入的函数,其他函数不引入print(random())print(randint(1, 10))

4.相对引用

有时我们需要引用当前py文件的父文件夹的模块,这时可以使用相对引用;(但是这种引用,当其他文件引用本py时,有报错风险; 只有在一个项目中的文件相互引用时,由于文件夹结构是固定的,所以推荐使用相对引用

文件结构如下:其中每个A.py, B.py, C.py 文件中的内容为定义一个函数 fun() 打印文件名;整个目录路径为:D:\PY_useful\import_intro│├─ A│  └─  A.PY│├─ B│  └─  B.PY│  └─  B_2│       └─ B_2.PY│└─ C   └─  C.PY
#.py文件中的代码:# A.pydef fun():    print('It is A.py')# B.pydef fun():    print('It is B.py')# C.pydef fun():    print('It is C.py')# B_2.PY import syssys.path.append(r'D:\PY_useful\import_intro')from A import AA.fun()    # 输出:It is A.pyfrom A.A import funfun()    # 输出:It is A.pydef fun():    print('It is B_2')

在B_2.py 中引用A.py 中的fun()

# 错误的做法:# 这时候,由于B_2.PY 在文件夹B_2中,所以按照相对引用来解析地址,我们会写出以下代码:from ...A import A  # . 表示当前目录,.. 表示父目录, ...表示父目录的父目录;

这时会报错:ValueError: attempted relative import beyond top-level package;
相对引用就会出现这样的错误,解决办法如下: 在环境变量地址中,加入顶级目录的路径,然后从高向低引用;

import sysprint(sys.path)    # 添加前的环境变量列表sys.path.append(r'D:\PY_useful\import_intro')    # 添加顶级目录print(sys.path)    # 添加后的环境变量列表# 方法一:from A import A    # 可以直接导入A包中的A模块A.fun()    # 输出:It is A.py# 方法二:from A.A import fun   # 可以直接导入A包.A模块 中的fun 函数fun()    # 输出:It is A.py

在C.py中引用B_2.py 模块

from B.B_2 import B_2B_2.fun()# 或者:from B.B_2.B_2 import funfun()

输出

It is A.py    # 在引入模块的时候,会执行一次模块的内容,所以这里输出了两次 It is A.pyIt is A.pyIt is B_2

三、引用不同文件下的 包或模块

在D:\PY_useful文件夹中创建文件夹 File_4,File_4中创建M4.py文件,M4.py 中的内容为:

# M4.py 的内容;def Func4():    print('In Func4')

如果想在别的地方,引用这里的Func4() 函数,有两种方法:

通过模块引用

首先需要将模块所在的路径(D:\PY_useful\File_4),加入环境变量路径中,然后通过引用模块,来使用Func4()函数;
a. 引入模块,然后通过模块调用函数

import syspath_add = r'D:\PY_useful\File_4'    # 模块所在的路径sys.path.append(path_add)    # 把路径添加到环境变量中import M4M4.Func4()

b. 直接引入模块中的函数

import syspath_add = r'D:\PY_useful\File_4'    # 模块所在的路径sys.path.append(path_add)    # 把路径添加到环境变量中from M4 import Func4Func4()

通过包的引入

首先需要将包(我们把File_4当作包)所在的路径(D:\PY_useful),加入环境变量路径中,然后通过引用包,来使用模块,再通过模块调用Func4()函数;

package:通常包总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块。包目录下为首的一个文件便是 init.py。然后是一些模块文件和子目录,假如子目录中也有 init.py 那么它就是这个包的子包了。
当程序不能把文件夹当作包时,在文件夹中建立空的py文件,文件名修改为: init.py , 有了这个空文件,文件夹会被Python程序理解成包;

a. 通过包,引入模块来调用函数;

import syspath_add = r'D:\PY_useful'    # 包所在的路径sys.path.append(path_add)    # 把路径添加到环境变量中from File_4 import M4M4.Func4()

b. 通过包,引入模块,再引入指定函数;

import syspath_add = r'D:\PY_useful'    # 模块所在的路径sys.path.append(path_add)    # 把路径添加到环境变量中from File_4.M4 import Func4Func4()

四、引入函数名冲突

函数名冲突的原因

想要解决函数名冲突,我们必须先明白Python的搜索模块顺序,python 按照顺序搜索模块,找到匹配项便会直接返回,不再向后查找,所以当有函数名相同的情况发生时,先被找到的函数会被执行;

Python搜索模块的顺序:

  1. 程序的主目录
  2. PTYHONPATH目录(如果已经进行了设置)
  3. 标准连接库目录
  4. 自己添加的path路径
    上面的顺序,使用sys.path 就可以看到,不需要记,记住sys.path 就可以啦~;
import sysfor i in sys.path:    print(i)
D:\PY_useful\import_intro\F1\F2      # 这是 .py 文件所在的位置D:\PY_useful\import_intro    # 这是 项目目录C:\ProgramData\Anaconda3\python36.zip   #下面这几个是python自己的目录C:\ProgramData\Anaconda3\DLLsC:\ProgramData\Anaconda3\libC:\ProgramData\Anaconda3C:\ProgramData\Anaconda3\lib\site-packages    # 下面是安装模块的目录C:\ProgramData\Anaconda3\lib\site-packages\win32C:\ProgramData\Anaconda3\lib\site-packages\win32\libC:\ProgramData\Anaconda3\lib\site-packages\Pythonwin

总结

主要是学习的这篇文章,条理清晰

参考了这篇文章,具体内容比上篇细致,先码住

我的另一篇文章:jupyter notebook中调用文件内自定义的函数


一般就是直接引入;最近相对引入要用的比较多,老是报错,这个文章介绍的挺清楚的;学吧学吧。
以后遇见其他相关问题会不断更新的。


补充一个PyCharm中的import方法

结构如下:
在这里插入图片描述
在这里插入图片描述

报错“attempted relative import with no known parent package“

  1. 打开File->Setting->python structure

  2. 点击add contend root ,选择所在文件夹
    在这里插入图片描述

  3. mark as sources,OK

在这里插入图片描述
然后就可以直接调用了
在这里插入图片描述

来源地址:https://blog.csdn.net/m0_70813473/article/details/127402951

--结束END--

本文标题: 【python】import的用法总结

本文链接: https://www.lsjlt.com/news/390943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【python】import的用法总结
    import用法总结 一、直接引入二、from 模块/包 import 模块/函数1.直接引入模块2.引入模块中的所有函数3.引入模块中的指定函数4.相对引用在B_2.py 中引用A.py 中...
    99+
    2023-09-02
    python 深度学习
  • Python import 【总结】
    Python import总结可能网上很多文章或博客都没解释清楚,作者自己也苦心于Python的import。至此,把自己的总结的分享给大家,本文不做基础讲解,仅说明疑惑的地方。新版本的Pycharm 2017.1.1,对自己定义的模块都有...
    99+
    2023-01-31
    Python import
  • python用法总结
    requests库的用法: requests是python实现的简单易用的HTTP库 因为是第三方库,所以使用前需要cmd安装 pip ×××tall requests 安装完成后import一下,正常则说明可以开始使用了 基本用法: im...
    99+
    2023-01-31
    python
  • python requests用法总结
    python requests用法总结requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。可以说,Requests 完全满足如今网络的需求本文全部来源于官方文档:   http://doc...
    99+
    2023-01-31
    python requests
  • python import的用法
    1、dir(keywork)报错>>> dir(keyword) Traceback (most recent call last):   File "<stdin>", line 1, in <modu...
    99+
    2023-01-31
    python import
  • python语法总结
    正确处理中文,可以在#!/usr/bin/python下面加上 一行# -*- coding: utf-8 -*-列表list。用方括号list1=[1,'2',3,[a,b,c]]尾部添加元素list1.append('python')l...
    99+
    2023-01-31
    语法 python
  • 总结Python常用的魔法方法
    目录一、算数运算符的魔法方法二、反运算相关的魔法方法三、增量赋值运算四、一元操作符一、算数运算符的魔法方法 python2.2以后,对类和类型进行了统一,做法就是讲int(...
    99+
    2022-11-12
  • Python字符串的用法总结
    本篇内容介绍了“Python字符串的用法总结”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!创建字符串很简单,只要为变量分配一个值即可。例如:...
    99+
    2023-06-04
  • Python super( )函数用法总结
    目录一、super( ) 的用途二、了解 super 的基础信息三、典型用法3.1 单继承问题3.2 单继承问题拓展3.3 重复调用问题3.4 super(type) 问题一、super( ) 的用途 了解 supe...
    99+
    2022-06-02
    Python super函数 python函数
  • Python list操作用法总结
    本文实例讲述了Python list操作用法。分享给大家供大家参考,具体如下: List是python中的基本数据结构之一,和Java中的ArrayList有些类似,支持动态的元素的增加。list还支持不同...
    99+
    2022-06-04
    操作 Python list
  • java调用python方法总结
    http://download.csdn.net/detail/xingjiarong/9429266 下载jython包,把其中的jython.jar添加到工程目录 一、在java类中直接执行python语句 import or...
    99+
    2023-01-31
    方法 java python
  • Python 中enum的使用方法总结
    目录1.为什么要用enum,什么时候使用enum2.enum的定义/声明3.遍历成员4.继承Enum的类中定义方法5.将Enum类属性的值定义为函数或方法6.自定义异常处理7.enu...
    99+
    2022-11-13
  • Python 序列的方法总结
    最近在做Python 的项目,特地整理了下 Python 序列的方法。序列sequence是python中最基本的数据结构,本文先对序列做一个简单的概括,之后简单讲解下所有序列都能通用的操作方法...
    99+
    2022-06-04
    序列 方法 Python
  • Python中np.linalg.norm()用法实例总结
    目录前言用法总结前言 np.linalg.norm()用于求范数,linalg本意为linear(线性) + algebra(代数),norm则表示范数。 用法 np.linalg....
    99+
    2022-11-11
  • Python中index函数用法总结
    用途 如果我们需要在序列类型数据(字符串、元组、列表)中查找某个元素并输出对应的索引值,就需要使用到index()方法了。 index()方法 2.1 描述 index() 函数用于从序列s中找出某个值第一个出现时的索引位置。 2 用法...
    99+
    2023-09-03
    python
  • Python字典方法总结
    1.清空字典中元素清空,dict变为{}    L.clear()-> None.  Remove all items from L>>> L ={'shaw':23,'sam':36,"eric":40}>&...
    99+
    2023-01-31
    字典 方法 Python
  • python中import的使用方法
    这篇文章主要介绍python中import的使用方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用python中import的方法:1、【import module_name】,即import后直接接模块名;2、...
    99+
    2023-06-07
  • Python字符串的基本用法总结
        字符串序列用于表示和存储文本,python中字符串是不可变对象。通常由单引号(' ),双引号(" ),三引号(''' """)包围,其中三引号可以由多行组成,编写多行文本的快捷语法,常用语文档字符串,在文件的特定地点,被当做注释。便...
    99+
    2023-01-31
    字符串 Python
  • python偏函数的实例用法总结
    说明 当函数的参数太多,需要简化时,使用functools.partial可以创建一个新的函数。 2、这个新的函数可以固定原始函数的部分参数,从而更容易调用。 作用是固定一个函数的某些参数(即设置默认值),返回一个新...
    99+
    2022-06-02
    python 偏函数
  • python enumerate函数的使用方法总结
    enumerate函数用于遍历序列中的元素以及它们的下标。 enumerate函数说明: enumerate()是python的内置函数 enumerate在字典上是枚举、列举的意思 函数原型:enu...
    99+
    2022-06-04
    使用方法 函数 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作