Python模块笔记

本文详细介绍了Python模块的概念,包括模块的导入方式,如`from..import`与`import..`的区别,以及如何处理导入模块后的命名空间和作用域问题。此外,还讲解了Python中的包,强调了`__init__.py`文件的重要性,并通过示例展示了`__name__`和`__main__`在判断模块执行方式中的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

1、导入模块

from..import和import..区别

在同一路径下新建文件now.py

# -*- coding:UTF-8 -*-

Money = 2000
def AddMoney(a):
   global Money
   Money = Money + a
   return Money

(1)使用from..import..

test2.py

from now import *
print AddMoney(2)

运行结果:

(2)使用import..

test2.py

# -*- coding:UTF-8 -*-
import now
print AddMoney(2)

运行结果:

会出现AddMoney没有定义的异常

此时需要添加前缀模块名,即将test2.py改为

# -*- coding:UTF-8 -*-
import now
print now.AddMoney(2)

2、命名空间和作用域

Python 假设任何在函数内赋值的变量都是局部的。因此,如果要给函数内的全局变量赋值,必须使用 global 语句。

# -*- coding:UTF-8 -*-

Money = 2000
def AddMoney(a):
  # global Money
   Money = Money + a
   return Money
 
 
AddMoney(3)

直接运行上面代码结果:


出现了局部变量Money在引用前没有被赋值的异常,然而我们想要的是使用已经赋值的全局变量Money,此时把取消注释里的global Money即可。

3、python中的包

包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。

__main__:主程序

__name__ :当前模块名

  • 如果模块是被导入的,__name__ 的值是 模块的名字
  • 如果模块是直接执行,__name__ 的值是 __main__

(1)now.py

# -*- coding:UTF-8 -*-

Money = 2000
def AddMoney(a):
   global Money
   Money = Money + a
   return Money
 
print AddMoney(5) 
print __name__

运行结果:


(2)test.py

#coding:utf-8
import now

print now.AddMoney(5)

运行结果:


可以看到此时now.py中函数外的print AddMoney(5)也被执行了,此时如果我们不想顶层代码被执行,可以进行如下判断:

将now.py改为

# -*- coding:UTF-8 -*-

Money = 2000
def AddMoney(a):
   global Money
   Money = Money + a
   return Money

if __name__ == '__main__':
	print AddMoney(5)   
print __name__
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值