在python导入模块中的对象有哪几种方式_Python3中几种import方法的区别

前言

第一次见到Python编程语言就被Python优雅的语言风格所吸引,果断抛弃了JAVA,转向了Python,虽然运行速度还是不快,但是对于写写demo,算法等时候思路比较清晰。毕竟life is short, I use Python.

f194abcf3374?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

Life is short, I use Python

正文

相信很多朋友在网上看各种demo代码的时候,会看到python有不同的导入的形式,例如import xxx, from xxx import yyy这种。那么我们应该使用哪种import方式呢?不同的import方式又有什么区别呢?

1.1 常规import

Example1.1.1:

import math

在import之后跟上你要导入的模块名即可。还可以一条语句导入多个模块, 模块之间用逗号(,)分隔。

Example1.1.2:

import os, math, sys

好处是可以节省空间,但是违背的Python Style Guide的推荐做法,即每个模块分别用一行语句导入。

在import的时候同时可以对模块进行重命名,一般用缩写来表示模块名,便于引用模块里面的函数,变量等等,这种方式在使用模块中的内容时要加上模块的名字。例如

Example1.1.3:

import math as pymath

print(pymath.sin(4))

1.2 from xxx import yyy

很多时候往往你只是想要使用模块中的一部分内容,这个时候就可以使用from xxx import yyy。此时使用模块中的内容就无需使用加入模块名,可以直接使用。例如

Example 1.2.1:(使用exp函数的时候不需要加入math):

from math import exp

print(exp(1))

这种方式即使代码很复杂,也能很方便地知道从哪个模块引入了哪些东西。当然你也可以通过类似的语句导入一个模块的所有内容,使用from xxx import * 即可,“ * ”是通配符,表示引入所有内容。

Example 1.2.2:

from math import *

print(tan(1))

print(cos(2))

事实上from xxx import * 方式看似便捷,但事实上不推荐使用,因为它会混淆命名空间(namespace),举个例子来说:

Example 1.2.3:

from math import *

print(exp(1))     # 输出自然对数的底数e, 2.718281828459045。

def exp(num):

print(num ** 2)

print(exp(1))    # 此时使用exp()函数则会调用用户定义的exp()函数, 输出1.

此时由于代码只是一个小的demo,对混淆命名空间感受不是很深刻。想象是一个很复杂的系统,从一个模块导入了所有的内容,你根据业务需求,对模块中的函数进行了适当的修改。在后期调用的时候,写了一天的代码的你自以为调用了模块自带的内容,最终发现程序输出始终和预期的不一样。然后就是无穷尽的debug, 加班。。。。。。希望你能养成import的好习惯,做一个高效率程序员,加油!

总结:

Python中 import 主要有两种方式,一种就是 import module, 采用这种方式调用模块中函数时要使用module.func 的方式。另一种则是 from module import something,则可以直接使用导入的函数。

欢迎各位在评论区交流和批评指正~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值