python import as-Python 学习之二: module, import 与 import as

Python 的模块可以按目录组织为包

创建一个包的步骤是:

1. 建立一个名字为包名字的文件夹

2. 在该文件夹下创建一个__init__.py 文件

3. 根据需要再该文件夹下存放脚本文件、已编译扩展及子包

4. import pack.m1, pack.m2, pack.m3

5. 模块是一个可以导入的Python 脚本文件

6. 包是一堆按目录组织的模块和子包,目录下的 __init__.py 文件放了包的信息

7. 可以用import,import as,form import等语句导入模块和包

1, module 的实质

python 中的module 本质上就是一个相对独立的python文件.

当需要重用某些功能时, 将此功能所在的模块import到需要的模块即可.

2, import 的实质

import的过程实际上包括两个主要部分,

1) 类似于shell 的 "source" 命令, 具体说即相当于将被import的module(即python文件)

在当前环境下执行一遍.

当多次import同一个module时, python会保证只执行一次.

参考Example1

2) import的第二个部分是使被import的成员(变量名, 函数名, 类....)可见.

为保证不发生命名冲突, 需要以 module.name 的方式访问导入的成员.

参考Example2

3, from *** import 的实质 (import 与 from *** import 的区别)

与import类似, 被导入的module仍然会执行且仅执行一次.

区别是当以 "from *** import " 方式导入module时, python会在当前module

的命名空间中新建相应的命名.

即, "from t2 import

var1" 相当于:

import t2

var1= t2.var1

在此过程中有一个隐含的赋值的过程

由于python赋值操作特性(参考Python

学习之1: 变量名的本质),

在当前代码中对"var1"的修改并不能影响到t2.py中"var1"的值. 同时,

在t2.py中对var1的修改也不能反映到当前的代码.

参考Example3

Example1:

t1.py:

import t2

import t3

print "execution of t1.py"

t2.py:

print "execution of

t2.py"

t3.py:

import t2

print "execution of t3.py"

(env) D: est>python t1.py

execution of t2.py

execution of t3.py

execution of t1.py

Example2:

t1.py:

import t2

print "a varialbe in t2 is %s" % t2.var_in_t2

print "now will call a functiong in t2"

t2.func_in_t2

t2.py:

var_in_t2 = 0

def func_in_t2():

print "this

is a function in t2.py"

print "execution of t2.py"

(env) D: est>python t1.py

execution of t2.py

a varialbe in t2 is 0

now will call a functiong in t2

Example3:

t1.py

from t2 import var_in_t2

import t2

print "the initial value in t1.py is %s" % var_in_t2

print "the initial value in t2.py is %s" % t2.var_in_t2

print "now try to change the value in the t1.py"

var_in_t2 = 50

print "now the value in t1.py is %s" % var_in_t2

print "now the value in t2.py is %s" %

t2.var_in_t2

print "now try to change the value in the t2.py"

t2.var_in_t2 = 20

print "now the value in t1.py is %s" % var_in_t2

print "now the value in t2.py is %s" %

t2.var_in_t2

t2.py

var_in_t2 = 0

def change_var():

global

var_in_t2

var_in_t2 =

100

(env) D: est>python t1.py

the initial value in t1.py is

0

the initial value in t2.py is 0

now try to change the value in the t1.py

now the value in t1.py is 50

now the value in t2.py is 0

now try to change the value in the t2.py

now the value in t1.py is 50

now the value in t2.py is 20

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值