part5_chapter23_module code basic pytho学习手册笔记

part5_chapter23_module code basic

一个意外发现

书中原例

#f.py
print("hello");
x = 1;
y = [4,5];

>>> from f import x,y
hello
>>> x =10
>>> y[0]=99
>>> import f
>>> f.x
1
>>> f.y
[99, 5]

把两个两个import对调

>>> import f
hello
>>> f.x =10
>>> f.y[0]=99
>>> from f import x,y
>>> x           ##这里的x, y 不是原来的f.py 而是上一个对象
10
>>> y
[99, 5]
>>> f.x=11
>>> f.y[1]=999
>>> x
10
>>> y
[99, 999]

为什么会这样呢?from只是把名称从一个模块复制到另一个模块,from module import name1,name2 可以等价以下形式

import module
name1 = module.name1;
name2 = module.name2; 

如果这么理解,那第一种方式就解释不通了。????
等有空得看下源码才知道了。

question

怎么创建模块?

一个文件即是一个模块,这个文件后缀是py, 文件名不能用保留字(for, if import。。。)

from 和import语句有什么关系?

from是导入整个模块,和import一样,但from会多做一步,从被导入的模块中复制一个或者多个属性到from所在的作用域。

reload和导入有什么关系?

reload是把之前导入的对象进行重新赋值。

在什么情况下必须用import,而不是 from?

当导入的模块中有同名属性时,只能用import

from语句的三种陷阱?

1 导入多个模块,同名时,后者会覆盖前者;
2 导入多个模块时,根据属性名,无法直观知道这是哪个模块属性;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一本郑经

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值