python模块和包(黑马学习笔记)

一、模块

[1]定义:

模块就是以.py结尾的python源文件。

[2]注意:

  1. 需要用时用import + 模块名导入模块;
  2. 在模块中全局变量、函数都是能提供给外界使用的;
  3. 模块名也是一个标识符;
  4. 当我们在一个py文件中导入另外一个py文件时时候会在当前目录下生产一个pyc的文件(是python解释器将模块文件的源码转换成了字节码)
    优点:进行速度的优化

[3]语法:

1. 导入模块(一)(常用的)

import 模块名 (as 别名)

注意:
如果模块名太长,则利用as关键字进行重命名
命名的规则仍是采用大驼峰命名法
用此方法导入模块中的函数的语法是 “模块名.函数名/变量名”

2.导入模块(二)(基本不采用)

from 模块名 import * 

注意:
这中导入法是把所有的模块中的所有的函数变量全部导入,基本不采用这种方法;
原因:如果自定义的模块中的函数与系统中的模块中的函数重名的话,则会覆盖,有一定的安全风险

3.导入模块(三)(基本不采用)

from 模块名 import 函数名

注意:
当导入的模块中有多个模块的时候,且这个模块中有同名函数,那么先导入的会被覆盖
这是导入模块中的函数和变量

例子:
python模块和包(黑马学习笔记)_第1张图片

若出现以上的这种情况有两种解决办法:
1.别名法

from hello import  hello_print as print_one
from  hello_one import  hello_print as print_two


print_one()
print_two()

2.导入法

import  hello
import  hello_one

hello.hello_print()
hello_one.hello_print()

[4]例子:

1.import导入

python模块和包(黑马学习笔记)_第2张图片

2.from …import * 导入

在这里插入图片描述

3.from…import…导入

python模块和包(黑马学习笔记)_第3张图片

二、模块搜索顺序

  1. 先搜索当前目录指定的模块名文件,如果有就直接导入
  2. 如果没有,则搜索系统目录
    注意:
    所以我们起文件名的时候不要和内置的文件名相同,否则不能正常执行

三、__name__属性

  1. __name__属性可以做到,测试模块的代码只在测试情况下被运行,而在被导入的时候不会别执行
  2. __name__保存这一个字符串:
    如果是被其他的文件导入的__name__保存的就是模块名

例如:
运行hello_world.py文件
python模块和包(黑马学习笔记)_第4张图片

运行demo.py文件
注:我们发现当运行demo.py文件的时候python把测试代码也给运行了,这时候我们就需要利用‘name’属性进行修改了
如:
python模块和包(黑马学习笔记)_第5张图片
python模块和包(黑马学习笔记)_第6张图片

四、代码的顺序

#导入模块
#定义全局变量
#定义类
#定义函数
........
#在代码最下方
def main():
	代码块
#根据__name__判断是否执行下方代码
if __name__ == "__main__":
	main()

五、包

【1】定义:

包是一个包含多个模块的特殊目录

【2】特点:

目录下有一个特殊的文件__init__.py文件(必须要有,否则就不是包)
如:
python模块和包(黑马学习笔记)_第7张图片

【3】包的导入:

import 包名

你可能感兴趣的:(python黑马基础学习,python,编程语言)