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
参考技术APython导入模块的方法有两种: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
参考技术B1,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 模块引入的区别