Python import和from import的区别(最好懂 看完不懂 我倒立洗头)

按照惯例先bb两句
能搜到帖子的时候,估计大家已经知道Python要调用一些函数,需要import XX、
比如random,datetime
但是还有一种语法是from X import XX
这两种语法区别对于初学者估计是有点懵懂的

简单来说

1.把import XX 理解成 运行XX要更好,

import xx = python xx.py

2.把py文件理解成菜谱,把运行py文件理解成炒菜
一个py文件你写了,你不运行,它就不起作用
一个菜谱放在那,你不炒菜,菜也不可能看着菜谱自己动起来
然后再把一个个py文件里面的函数理解成一个一个菜
ok看一点例子就好了

来点例子

这是一个菜谱,文件名是caipu.py

# caipu.py
# -*- coding: utf-8 -*-
# 这是一个菜谱

# 这是肉蛋葱鸡的做法
def  roudancongji():
        print "这波啊 这波是肉蛋葱鸡"
# 这是麻辣香锅
def  mlxg():
        print "这是一道麻辣香锅"

先来理解import
首先是在交互界面测试

>>> import caipu
>>> caipu.roudancongji()
这波啊 这波是肉蛋葱鸡
>>> caipu.mlxg()
这是一道麻辣香锅

import caipu就相当于拿了菜谱过来,并且获得了每一道菜的做法(获得了每一个函数的定义)

为什么说import基本和直接运行一样呢

如果在caipu.py末尾追加一个

roudancongji()

那么。。
import的时候,它也会执行一次那个函数
在这里插入图片描述
说完import 再说下

from caipu import *

>>> from caipu import *
这波啊 这波是肉蛋葱鸡
>>> roudancongji()
这波啊 这波是肉蛋葱鸡
>>> mlxg() 这是一道麻辣香锅
>>> caipu.mlxg()
Traceback (most recent call last):
File “”, line 1, in
NameError: name 'caipu’is not defined

区别就是调用的时候不需要说明这个roudancongji()函数是caipu.py下的

如果是

import caipu

调用caipu.py的肉蛋葱鸡菜谱时,需要使用

caipu.roudancongji()

如果是

from caipu import *

个人感觉from xx import yy的用法比直接import要好

调用caipu.py的肉蛋葱鸡菜谱时,就使用

roudancongji()

最后说下
from caipu import some

from caipu import *
的区别

>>> from caipu import roudancongji
这波啊 这波是肉蛋葱鸡
>>> roudancongji()
这波啊 这波是肉蛋葱鸡
>>> mlxg()
Traceback (most recent call last):
File"", line 1, in
NameError: name ‘mlxg’ is not defined

如果from caipu import roudancongji的话
就只会拿到肉蛋葱鸡的菜谱了
所以想尝试麻辣香锅的菜谱就报错了
NameError: name ‘mlxg’ is not defined相当于没有找到mlxg这个菜的菜谱!

可能你会想问。。
那为什么我不直接from caipu import * 呢
万一我做菜做着还想要用到菜谱的其他菜呢?(调用别的.py可能还需要其他函数和功能)

。。。
简单来说就是 如果caipu.py有10000+道菜呢。。
import的时候就耗时间了,生成了无意义的函数功能,

就好像一本菜谱和一本辞海一样重的情况下,
你需要做几个菜,你是拿你需要的那几页去厨房,还是抱着一整本书去厨房呢
在这里插入图片描述

Python中的import和from import是用来导入其他模块的方式。使用import xxx时,表示导入整个模块xxx,可以通过xxx来访问该模块中的函数、类和变量等。\[1\]而使用from xxx import mmm时,表示只导入模块xxx中的特定函数、类或变量mmm,可以直接使用mmm而不需要使用xxx作为前缀。\[2\]另外,使用from xxx.mmm import yyy时,表示从模块xxx的子模块mmm中导入特定函数或类yyy。\[2\]最后,使用from mmm import *时,表示导入模块mmm中的所有函数、类和变量,但不推荐使用这种方式,因为可能会导致命名冲突。\[2\]总结来说,无论是使用import还是from import,都是用来导入模块或模块中的特定函数、类和变量。\[3\] #### 引用[.reference_title] - *1* *3* [Python 中的 import 与 from import 区别](https://blog.csdn.net/skydust1979/article/details/106955139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Pythonimport和from import区别](https://blog.csdn.net/jk_101/article/details/112279923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值