Python笔记4 包、模块、函数与变量作用域

本文详细介绍了Python项目的组织结构,从包到模块再到类和函数的层级划分,以及如何通过import和from import语句进行模块和变量的导入。同时,文章还解释了命名空间的概念,以及如何控制模块中可导入的变量。

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

高性能、封装性(可复用)、抽象

Python项目的组织结构:

  1. 最顶级的组织结构:包(文件夹)
  2. 第二层级:模块(.py文件)
  3. 第三层级:类
  4. 第四层级:函数、变量

Python包与模块的名字 

区分不同包的同名模块:包名.模块名

形成的模块的路径叫做命名空间

一个包下面可以有子包,模块可以和包平级

普通文件夹想要变成包必须要有__init__.py文件, __init__.py本身也是一个模块,可以不写内容只是标注包

特殊地,__init__.py模块的名字就是包名

import导入模块 

利用 import 模块名 导入

#test1.c1
a = 1

#test1.c2
import c1
print(c1.a)

#1

import导入的总是模块,需要用模块名.变量名的方法引用

可以用as简化书写

#test1.c2 
import c1 as m
print(m.a)

from import 导入变量 

注意此处导入变量之后,就可以直接使用变量,不用加前面的命名空间了

#test1.c2
from c1 import a
print(a)

也可以from 包 import 模块,引用时用 模块.变量

引用大量变量时使用 * :

#test1.c1
a = 1
b = 2
c = 3
d = 4

#test1.c2 
from c1 import *
print(a)
print(b)
print(c)
print(d)

控制*的行为:

#test1.c1
__all__ = ['a','c']    #用内置变量__all__来控制*的选择范围
a = 1
b = 2
c = 3
d = 4

#test1.c2 
from c1 import *
print(a)
print(c)
print(d)    #d没有被打印,报错

隐藏__pycache__文件夹

代码换行:在上一行末尾加上\或者加上括号利用括号的特性换行

from c1 import (a,b,
c)

from c1 import a,b,\
c

__init__.py 文件

当包被导入时,__init__.py会首先自动被执行

#test1.__init__.py
a = 'This is a __init__.py file'

print(a)

#c8.py
import test1

#This is a __init__.py file

__init__.py的应用场景:

1. 内置变量 __all__ 来控制 * 的导入模块,初始化

#seven/t/c7.py
a = 1

#seven/t/c8.py
b = 2

#seven/t/__init__.py
__all__ = ['c7']

#seven/c8.py
from t import *

print(c7.a)
print(c8.b)

# PS D:\python_learning\seven> python c8.py
# 1
# Traceback (most recent call last):
#   File "c8.py", line 4, in <module>
#     print(c8.b)
# NameError: name 'c8' is not defined

2. 批量导入库

#test1.__init__.py
import sys        #批量导入库
import datetime
import io

#c8.py
import test1
print(test1.sys.path)

包与模块的几个常见错误

  1. 包和模块是不会被重复导入的,只会执行一次(入口文件的概念)
  2. 避免循环导入,不要形成闭环
  3. 导入模块的时候会执行模块里所有的代码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值