一、模块
一、模块
一个py文件就是一个模块
导入模块两种方法:
import 模块名
from 模块名 import 功能 (安全,推荐)
模块使用原理 :用 “.” 调用,比如random.random
注意点:新增加的模块通过import调用时,pycharm不识别会飘红,通过下面的方式解决
鼠标右键目录名 ——> Mark Directory as ——> Source Root
1、先创建一个模块(modes.py)
gongneng1 = '我会跳' # 功能1
def gongneng2(): # 功能2
print('You jump I jump')
2、通过import导入这个模块
用法: 模块名.功能, 【“.” 是 “的” 的意思】
import modes # 注意这里没有.py
print(modes.gongneng1) # 调用模块里面的功能1
modes.gongneng2() # 调用模块里面的功能2
-------------------------------------------------
我会跳
You jump I jump
3、通过from…import… 导入模块(安全,推荐)
用法: 调用功能
from modes import gongneng1
print(gongneng1) # 直接使用功能1
-------------------------------------
我会跳
from modes import gongneng2
gongneng2() # 直接使用功能2
--------------------------------------
You jump I jump
4、程序入口
写模块的时候用来自己做测试的代码,防止被调用者使用
用法:直接写main 回车补全代码
(1) 写模块:modes.py
gongneng1 = '我会跳' # 功能1
def gongneng2(): # 功能2
print('You jump I jump')
if __name__ == '__main__': # 程序入口,我自己的测试代码
print('这是我的测试代码')
----------------------------------------
这是我的测试代码
(2) 别人调用我写的模块就不会执行我的测试代码
import modes
print(modes.gongneng1)
modes.gongneng2()
--------------------------------
我会跳
You jump I jump
二、创建模块别名
常用于数据发掘工作
import modes2 as md2
md2.gongneng2()
---------------------------
You jump I jump
二、包
一、包
包的本质就是一个文件夹
包里面默认会有一个__init__.py文件,导入包的时候会先执行__init__.py,但是我们不用去管它,也不能删除它
包里面还可以创建其他的包
包里面用于存放各种模块
用法:
from 包.包 import 模块
from 包.包.模块 import 功能
1、鼠标右键文件夹,创建一个包,名字: bao
包名:
可以是bao_abc
不可以是bao-abc
1.1、包里面创建一个模块modes3.py
2、包的正确用法
from 包.模块 import 功能
from bao.modes3 import func
func() # 直接执行功能
-----------------------------
我是第一个模块
from 包 import 模块
from bao import modes3
modes3.func() # 模块.功能
-----------------------------
我是第一个模块
3、包的相对路径用法(了解)
相对路径只能在包里面使用(…/),但是需要去外面调用
需求:我在bao2的mode4.py里面使用相对路径(…/)去调用bao3的modes3.py
(1) 在modes4.py里面直接使用相对路径调用modes3.py是会报错的
from ..bao3 import modes3
modes3.func()
----------------------------------
ValueError: attempted relative import beyond top-level package # 超出了执行范文
(2) 我只能在包(bao)外面去执行modes4.py,再让modes4.py去调用modes3.py才是正确的相对路径用法
# vim test3.py # 在bao外面创建一个py文件
from bao.bao2 import modes4 # 执行这个py文件就可以调用modes3.py
-----------------------------------
我是modes3.py