• python导入模块


    1、import 模块名 as 别名

    (1)

    1 # 导入sys整个模块
    2 import sys
    3 # 使用sys模块名作为前缀来访问模块中的成员
    4 print(sys.argv[0])

    上面第 2 行代码使用最简单的方式导入了 sys 模块,因此在程序中使用 sys 模块内的成员时,必须添加模块名作为前缀。

    (2)

    导入整个模块时,也可以为模块指定别名。例如如下程序:

    1 # 导入sys整个模块,并指定别名为s
    2 import sys as s
    3 # 使用s模块别名作为前缀来访问模块中的成员
    4 print(s.argv[0])

    第 2 行代码在导入 sys 模块时才指定了别名 s,因此在程序中使用 sys 模块内的成员时,必须添加模块别名 s 作为前缀。

    (3)

    也可以一次导入多个模块,多个模块之间用逗号隔开。例如如下程序:

    1 # 导入sys、os两个模块
    2 import sys,os
    3 # 使用模块名作为前缀来访问模块中的成员
    4 print(sys.argv[0])
    5 # os模块的sep变量代表平台上的路径分隔符
    6 print(os.sep)

    (4)

    在导入多个模块的同时,也可以为模块指定别名,例如如下程序:

    1 # 导入sys、os两个模块,并为sys指定别名s,为os指定别名o
    2 import sys as s,os as o
    3 # 使用模块别名作为前缀来访问模块中的成员
    4 print(s.argv[0])
    5 print(o.sep)

    2、from  模块名 import 成员名 as 别名

    (1)

    下面程序使用了 from...import 最简单的语法来导入指定成员:

    # 导入sys模块的argv成员
    from sys import argv
    # 使用导入成员的语法,直接使用成员名访问
    print(argv[0])

    第 2 行代码导入了 sys 模块中的 argv 成员,这样即可在程序中直接使用 argv 成员,无须使用任何前缀。

    (2)

    导入模块成员时,也可以为成员指定别名,例如如下程序:

    1 # 导入sys模块的argv成员,并为其指定别名v
    2 from sys import argv as v
    3 # 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
    4 print(v[0])

    第 2 行代码导入了 sys 模块中的 argv 成员,并为该成员指定别名 v,这样即可在程序中通过别名 v 使用 argv 成员,无须使用任何前缀。

    (3)

    form...import 导入模块成员时,支持一次导入多个成员,例如如下程序:

    1 # 导入sys模块的argv,winver成员
    2 from sys import argv, winver
    3 # 使用导入成员的语法,直接使用成员名访问
    4 print(argv[0])
    5 print(winver)

    上面第 2 行代码导入了 sys 模块中的 argv、 winver 成员,这样即可在程序中直接使用 argv、winver 两个成员,无须使用任何前缀。

    (4)

    一次导入多个模块成员时,也可指定别名,同样使用 as 关键字为成员指定别名,例如如下程序:

    1 # 导入sys模块的argv,winver成员,并为其指定别名v、wv
    2 from sys import argv as v, winver as wv
    3 # 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
    4 print(v[0])
    5 print(wv)

    上面第 2 行代码导入了 sys 模块中的 argv、winver 成员,并分别为它们指定了别名 v、wv,这样即可在程序中通过 v 和 wv 两个别名使用 argv、winver 成员,无须使用任何前缀。

    (5)

    不推荐使用 from import 导入模块所有成员

    在使用 from...import 语法时,可以一次导入指定模块内的所有成员(此方式不推荐),例如如下程序:

    1 #导入sys 棋块内的所有成员
    2 from sys import *
    3 #使用导入成员的语法,直接使用成员的别名访问
    4 print(argv[0])
    5 print(winver)

    上面代码一次导入了 sys 模块中的所有成员,这样程序即可通过成员名来使用该模块内的所有成员。该程序的输出结果和前面程序的输出结果完全相同。
    (6)
    需要说明的是,一般不推荐使用“from 模块 import”这种语法导入指定模块内的所有成员,因为它存在潜在的风险。比如同时导入 module1 和 module2 内的所有成员,假如这两个模块内都有一个 foo() 函数,那么当在程序中执行如下代码时:

    foo()

    上面调用的这个 foo() 函数到底是 module1 模块中的还是 module2 模块中的?因此,这种导入指定模块内所有成员的用法是有风险的。

    但如果换成如下两种导入方式:

    1 import module1
    2 import module2 as m2

    接下来要分别调用这两个模块中的 foo() 函数就非常清晰。程序可使用如下代码:

    1 #使用模块module1 的模块名作为前缀调用foo()函数
    2 module1.foo()
    3 #使用module2 的模块别名作为前缀调用foo()函数
    4 m2.foo()

    或者使用 from...import 语句也是可以的:

    1 #导入module1 中的foo 成员,并指定其别名为foo1
    2 from module1 import foo as fool
    3 #导入module2 中的foo 成员,并指定其别名为foo2
    4 from module2 import foo as foo2

    此时通过别名将 module1 和 module2 两个模块中的 foo 函数很好地进行了区分,接下来分别调用两个模块中 foo() 函数就很清晰:

    1 foo1() #调用module1 中的foo()函数
    2 foo2() #调用module2 中的foo()函数
  • 相关阅读:
    JS字符串之字符方法
    JS数组之归并方法
    JS数组之迭代方法
    JS数组之位置方法
    JS数组之操作方法
    【Vue-入门笔记-3】
    【Vue-入门笔记-2】
    阿里靠什么武功秘籍渡过“双十一“的天量冲击
    CC++ --- 线性表-学生成绩管理系统
    TortoiseSVN 使用教程
  • 原文地址:https://www.cnblogs.com/andrew-address/p/12688854.html
Copyright © 2020-2023  润新知