python import 和 from XX import * 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python import 和 from XX import * 的区别相关的知识,希望对你有一定的参考价值。

我import了一个socket模块,运行的时候说是没有AF_INET 这个族。 于是 把import socket改成了 from socket import * 于是就运行成功了。这两者有区别吗?

一、作用不同

1、import: 可以修改模块对象的属性,无论属性是不是可变类型。

2、 from XX import * :只能修改模块对象的属性是可变类型的,不可变类型不能修改。

二、用法不同

1、import:import xx,以import time和创建的一个python类为例:调用time模块中的方法时,需要在前加上time.;而调用类中的方法时,也需要在前面加上实例名aa。

2、 from XX import * :使用这种方式,则可以直接调用。


三、特点不同

1、import:所有导入的类使用时需加上模块名的限定。

2、 from XX import * :所有导入的类不需要添加限定。


参考资料来源:百度百科-Import

参考资料来源:百度百科-Python

参考技术A

Python导入模块的方法有两种:import module 和 from module import,区别是前者所有导入的东西使用时需加上模块名的限定,而后者不需要。

1、import datetime是引入整个datetime包,如果使用datetime包中的datetime类,需要加上模块名的限定。

如果不加模块名限定会出现错误:TypeError: 'module' object is not callable \\ AttributeError: 'module' object has no attribute 'now'

2、from datetime import datetime是只引入datetime包里的datetime类,在使用时无需添加模块名的限定。

扩展资料:

python标准库:

Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。Python标准库命名接口清晰、文档良好,很容易学习和使用。

Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,并且大多成熟而稳定。

第三方模块可以使用Python或者C语言编写。SWIG,SIP常用于将C语言编写的程序库转化为Python模块。Boost C++ Libraries包含了一组库,Boost.Python,使得以 Python 或 C++ 编写的程序能互相调用。

借助于拥有基于标准库的大量工具、能够使用低级语言如C和可以作为其他库接口的C++,Python已成为一种强大的应用于其他语言与工具之间的胶水语言。

参考资料:百度百科-python

参考技术B

1,import socket的话要用socket.AF_INET,因为AF_INET这个值在socket的名称空间下。from socket import*是把socket下的所有名字引入当前名称空间。

2,from A import B 把B引入当前文件C的命名空间中。假设B初始化值为0,把B引入C命名空间后,如果在A中又修改了B的值:B=1,这时在C中,会发现B的值还是0,没有变化。解决方法就是在文件C中使用import A, 然后使用A.B。

举个例子:

import datetime

print(datetime.datetime.now())

以上代码实现输出系统当前时间,是引入整个datetime包,然后再调用datetime这个类中的now()方法。 

以上代码实现功能也可以用以下代码实现:

from datetime import datetime

print(datetime.now())

这里是从datetime包中只导入datetime这个类,让后再调用datetime这个类中的now()方法实现同样的目的。

假如你嫌datetime这个包名称太长,想要给它取个别名,以后每次用到它的时候都用它的别名代替它,这时就需要用到import…as,例子如下:

import datetime as dt

print(dt.datetime.now())

以上代码完成呢个与之前同样的功能,输出系统当前时间。

扩展资料

在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。

网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它。

单行语句和命令行输出问题:很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。而perl和awk就无此限制,可以较为方便的在shell下完成简单程序,不需要如Python一样,必须将程序写入一个.py文件。

参考技术C 最近在用codecademy学python,遇到一些题目错误,小小记录一下
如from math import sqrt是把sqrt作为本文件的方法导入进来了,使用的时候只需要直接调用sqrt。
而如果import是import math,那么调用的时候要采用math.sqrt的方式。
那么如果在自己的文件里定义了相同名字的函数怎么办呢,来实验一下
from math import sqrt def sqrt(n): return n print sqrt(13689) raw_input()运行py文件输出13689,所以自己定义了函数会自动屏蔽掉。
所以大量引用import math.*是个比较好的办法,from math import *就容易出错了,当然用到很少的函数且次数较多时上面这种办法会比较合适。
另外python不支持像java那样import math.sqrt
参考技术D import socket的话
要用socket.AF_INET
因为AF_INET这个值在socket的名称空间下

from socket import*
是把socket下的所有名字引入当前名称空间本回答被提问者采纳

python中 from xx import,import几种导包的情况

简单的统计了一下,python中的导入本地包的情况,大概分为三种情况,目录如下:
技术图片
1.有类名的,用 from xx import 引入本地包的,如:class xx():

#创建的一个Cat类
class Cat():

    def name(self):
        print(‘我叫小花猫‘)

    def sex(self):
        print(‘我是一枚小女生‘)

    def age(self):
        print(‘今年3岁了‘)
#创建的一个Animal类
from Test.Cat import Cat

    cat = Cat()
    cat.name()
    cat.sex()
    cat.age()

2.没有类名的文件,用 from xx import 引入本地包的,文件中存在 如:def 方法名():

#创建一个狗类
def name():
    print(‘我叫癞皮狗‘)

def sex():
    print(‘我是小帅哥‘)

def age():
    print(‘我今年2岁半了‘)
#在Animal类中,导入狗类的方法名
from Test.Dog import name,sex,age

      name()
      sex()
      age()

3.没有类名的文件,直接用 import引入本地包的

#创建一个小猪类
def say_hello():
      print(‘请叫我小猪‘)
#在Animal类中,用import导入小猪类中的方法名
import Test.Pig_小猪

     Test.Pig_小猪.say_hello()

以上是关于python import 和 from XX import * 的区别的主要内容,如果未能解决你的问题,请参考以下文章

python中 from xx import,import几种导包的情况

python import xxx 与 from xxx import xx 模块引入的区别

浅谈python中得import xxx,from xxx import xxx, from xxx import *

import和from-import的区别

关于import和from xx import xx

导入模块方式(尽量少用from xx import *)以及包的定义,跨目录运行包和模块(未完)