Python:模块和包简介和基本使用

本文详细介绍了Python中模块的导入策略,包括文件名和功能名的命名规则,以及如何使用`from...import`、`import*`和`__all__`来管理功能冲突。还探讨了模块别名和在包结构中导入的注意事项。
摘要由CSDN通过智能技术生成

模块的定位顺序

# 1. 自己的文件名不能和已有模块名重复,如果重复导致模块无法使用 -- random
# import random
# num = random.randint(1, 5)
# print(num)


# 2. 当使用from xx import 功能 导入模块的功能的时候,如果功能名字重复,导入的时候后定义或后导入的这个同名功能
# 场景 time.sleep()
# def sleep():
#     print('我是自定义的sleep')
#
#
# from time import sleep
#
# # 定义函数 sleep
# # def sleep():
# #     print('我是自定义的sleep')
#
# sleep(2)


# 拓展: 名字重复
# 问题:import 模块名  是否担心 功能名字重复的问题  -- 不需要
import time
print(time)

time = 1
print(time)

# 问题:为什么变量也能覆盖模块? -- 在Python语言中,数据是通过 引用 传递的。



模块的使用方法

# 需求:math模块下sqrt() 开平方计算
"""
1. 导入模块
2. 测试是否导入成功:调用该模块内的sqrt功能
"""
# 方法一:import 模块名; 模块名.功能
# import math
# print(math.sqrt(9))


# 方法二: from 模块名 import 功能1, 功能2...; 功能调用(不需要书写模块名.功能)
# from math import sqrt
# print(sqrt(9))


# 方法三:from 模块名 import \*; 功能调用(不需要书写模块名.功能)
from math import \*
print(sqrt(9))




my_module2

# 定义多个功能,把某个功能添加到\_\_all\_\_
\_\_all\_\_ = ['testA']


def testA():
    print('testA')


def testB():
    print('testB')




别名

# 需求: 运行后暂停2秒打印hello
"""
1. 导入time模块或导入time模块的sleep功能
2. 调用功能
3. 打印hello
"""

# 1. 模块别名
# import time as tt
# tt.sleep(2)
# time.sleep(2)
# print('hello')

# 2. 功能别名
from time import sleep as sl
sl(2)
print('hello')




random


all列表

from my\_module2 import \*


testA()

# 因为testB函数没有添加到all列表,只有all列表里面的功能才能导入
# testB()

my_module1

# 需求:一个函数 完成任意两个数字加法运算
def testA(a, b):
    print(a + b)


# 测试信息
# testA(1, 1)

# print(\_\_name\_\_)

# \_\_name\_\_是系统变量,是模块的标识符,值是:如果是自身模块值是\_\_main\_\_, 否则是当前的模块的名字
if \_\_name\_\_ == '\_\_main\_\_':
    testA(1, 1)


调用自己制作的模块

# 1. 导入模块
import my\_module1

# 2. 调用功能
my\_module1.testA(2, 2)



导入包

# 方法一
"""
1. 导入
import 包名.模块名
2. 调用功能
包名.模块名.功能()
"""
# 导入mypackage包下的模块1,使用这个模块内的info\_print1函数
# import mypackage.my\_module1
# mypackage.my\_module1.info\_print1()


# 方法二:注意 设置\_\_init\_\_.py文件里面的all列表,添加的是允许导入的模块
"""
from 包名 import \*
模块名.目标
"""
from mypackage import \*
my\_module1.info\_print1()


my_module2

# 定义多个功能,把某个功能添加到__all__
__all__ = ['testA']


def testA():
    print('testA')


def testB():
    print('testB')




my_module1

# 需求:一个函数 完成任意两个数字加法运算
def testA(a, b):
    print(a + b)


# 测试信息
# testA(1, 1)

# print(__name__)

# __name__是系统变量,是模块的标识符,值是:如果是自身模块值是__main__, 否则是当前的模块的名字
if __name__ == '__main__':
    testA(1, 1)


mypackage包

my_module1

print(1)


def info_print1():
    print('my_module1')

my_module2(1)

print(1)


def info_print2():
    print('my_module2')

init(1)

__all__ = ['my_module1']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员无羡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值