首页 > 编程语言 >Python基础17

Python基础17

时间:2022-10-18 19:14:47浏览次数:50  
标签:__ 文件 17 Python py 基础 导入 模块 import

今日内容概要

  • 索引取值与迭代取值的差异
  • 模块简介
  • 模块分类
  • 导入模块的两种句式
  • 导入模块补充说明
  • 循环导入问题
  • 判断文件类型
  • 模块的查找顺序
  • 绝刀导入与相对导入
  • 包概述

今日内容详细

索引取值与迭代取值的差异

1.索引取值
	可以任意位置任意次数取值 不支持无序类型的数据取值
2.迭代取值
	只能从前往后依次取值无法后退 支持所有类型的数据取值(有序的和无序的)
'''根据实际需求选择取值方式'''

模块简介

模块的本质

	简而言之,在python中,一个文件(以“.py”为后缀名的文件)就叫做一个模块,每一个模块在python里都被看做是一个独立的文件。模块让你能够有逻辑地组织你的 Python 代码段。把相关的代码分配到一个模块里能让你的代码更好用,更易懂。模块能定义函数,类和变量,模块里也能包含可执行的代码。一个模块编写完毕之后,其他模块直接调用,不用再从零开始写代码了,节约了工作时间;避免函数名称和变量名称重复,在不同的模块中可以存在相同名字的函数名和变量名,但是,切记,不要和系统内置的模块名称重复。

python模块的历史

	python刚开始的时候所有搞其他编程语言的程序员都看不起 甚至给python起了一个外号>>>调包侠(贬义词)
	随着时间的发展项目的复杂程度越来越高 上面那帮人也不得不用一下python 然后发现真香定律>>>调包侠(褒义词)

python模块的表现形式

1.py文件(py文件也可以称之为是模块文件)
2.含有多个py文件的文件夹(按照模块功能的不同划分不同的文件夹存储)
3.已被编译为共享库或者DLL或C++扩展(了解)
4.使用C编写并链接到python解释器的内置模块(了解)

模块的分类

1.内置模块
	内置模块就是python自带的可以直接调用的模块
	如	import time
		 time.sleep(3)   # 等待三秒再运行
2.自定义模块
	自定义模块就是自己写出来的模块
	如 自己写的登陆注册
3.第三方模块
	第三方模块就是大佬们将已经写好了的发布在网上我们直接CV战士即可
	如 图像识别 人脸识别

导入模块的两种句式

'''注意
	1.一定要搞清楚谁是执行文件 谁是被导入文件
	2.之后开发项目的时候py文件的名称一般都是纯英文 不会含有中文甚至空格
	3.导入模块文件不需要填写后缀名
'''
1.import句式
	import 被导入模块名
	'''
	1.先产生执行文件的名称空间
	2.执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
	3.在执行文件的名称空间中产生一个模块名
	4.在执行文件中使用该模块名点的方式使用模块名称空间中所有的名字
	'''
2.from...import...句式
	from 模块名 import 需要使用的名字
	'''
	1.先产生执行文件的名称空间
	2.执行被导入文件的代码将产生的名字放入被导入文件的名称空间中
	3.在执行文件的名称空间中产生对应的名字绑定模块名称空间中对应的名字
	4.在执行文件中直接使用名字就可以访问名称空间中对应的名字
	'''

导入模块补充说明

1.import与from...import...两者的优缺点
	import句式
		由于使用模块名称空间中的名字都需要模块名点的方式才可以用 所以不会轻	  易的将被执行文件中的名字替换掉
		但是每次使用模块名称空间中的名字都必须使用模块点才可以,比较麻烦
	from...import...句式
    	指名道姓的导入模块名称空间中需要使用的名字 不需要模块名点的方式使 	  用 但是容易跟执行文件中的名字冲突
2.重复导入模块
	解释器只会导入一次 后续重复的导入语句并不会执行 相当于没用的代码
3.起别名
	import 模块名 as 别名
	from 模块名 import 需要使用的名字 as 别名
	from a import name as n, func as f1  # 取多个别名
4.涉及到多个模块导入
	# 方式一 分别导入
	import a
	import b
	# 方式二 一起导入
	import a, b
	如果模块功能相似度不高 推荐使用第一种 相似度高可以使用第二种

循环导入问题

1.循环导入
	两个文件之间彼此导入彼此并且相互使用各自名称空间中的名字 极容易报错
2.如何解决循环导入问题
	确保名字在使用之前就已经准备完毕
	在之后编写代码的过程中应该尽可能避免出现循环导入

判断文件类型

所有的py文件都可以直接打印__name__对应的值
	当py文件是执行文件的时候__name__对应的值是__main__
	当py文件是被导入文件的时候__name__对应的值是模块名

'''区分所在py文件内python代码的执行'''
if __name__ == '__main__':
    print('我是执行文件 我可以运行这里的子代码')
	# 只有当是被执行文件时才会调用 被导入时不会调用
使用场景
	1.模块开发阶段
	2.项目启动文件
'''
from a import *  *默认是将模块名称空间中所有的名字导入
__all__ = ['名字1', '名字2']  针对*可以限制拿的名字
'''

模块的查找顺序

	先从内存中找,内存中没的话会去内置中找,内置中找不到的话会去sys.path中找(环境变量)
1.内存 
	import a  # 创建一个a.py文件 里面定义一个name
	import time
	time.sleep(15)  # 右键运行 然后将a.py删掉
	print(a.name)   # 最后会执行完毕 并打印a.name所对应的数据
2.内置
	import time  # 此时的time是自定义的time
	print(time)
	print(time.name) # 取自定义time中name的数据
	# 运行会报错 因为当内存中没有time模块时会先去内置中找 内置中的time并没有name  
3.执行文件所在的sys.path(系统环境变量)
	当模块和执行文件不在同一个目录时 直接导入也是会报错的
	可以将模块所在的路径也添加到执行文件的sys.path中即可
	import sys
	print(sys.path) # 查看系统环境变量 是一个列表
	sys.path.append(r'模块的路径')  # 是一个列表 所以可以通过列表的相关命令添加数据

绝对导入与相对导入

绝对导入
	from mymd.aaa.bbb.ccc import name  # 可以精确到变量名
	from mymd.aaa.bbb import ccc  # 也可以精确到模块名
相对导入
	.在路径中表示当前目录
	..在路径中表示上一层目录
	..\..在路径中表示上上一层目录
	相对导入不再依据执行文件所在的sys.path 而是以模块自身路径为准
	from . import a
	相对导入只能用于模块文件中 不能再执行文件中使用
'''
相对导入使用频率较低 一般用绝对导入即可 结构更加清晰
'''

	简单理解,包就是文件夹,里面是多个py文件的集合,只不过在该文件夹下必须存在一个名为“__init__.py” 的文件。
'''注意,这是 Python 2.x 的规定,而在 Python 3.x 中,__init__.py 对包来说,并不是必须的。'''

标签:__,文件,17,Python,py,基础,导入,模块,import
From: https://www.cnblogs.com/lzjjjj/p/16803687.html

相关文章

  • Python爬虫(学习笔记)
    Python爬虫(学习笔记)  常见的反爬机制及应对策略名称描述解决方案/反反爬措施1.Headers 从用户的headers进行反爬是最常见的反爬策略,Headers是......
  • 【Python】第3章-7 求最大值及其下标
    本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。输入格式:输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。输出格式......
  • Python 2 数据类型
    关键字规则变量定义使用#作者:咸瑜#代码时间:2022/10/1715:57name="咸瑜"print('值',name)print('id',id(name))print('类型',type(name))......
  • Python项目生成requirements.txt文件
    一、前言对于Python项目,生成和使用requirements.txt是十分必要的。通过requirements.txt可以一次性保存和安装项目所需要的所有库。尤其是在不同电脑操作时。allure......
  • python模块
    今日内容概要索引取值与迭代取值的差异模块简介导入模块的两种句式导入模块的局势补充循环导入问题及解决策略判断文件类型模块的查找顺序模块的绝对导入与相对......
  • 如何让不给听得歌乖乖听话?python教你如何做...
    前言嗨喽,大家好呀~这里是爱看美女的茜茜呐又到了学Python时刻~在面对想听的歌没得权时,正常人一般的操作是百度一下又或者直接找朋友借但是程序员就不一样了~直接展示......
  • day17模块基础简介
    目录索引取值与迭代取值的差异模块简介模块的分类导入模块的两种句式导入模块补充说明循环导入问题判断文件类型模块的查找顺序绝对导入与相对导入包索引取值与迭代取值的......
  • 爱数课平台“Python语言基础与实践”课程重磅上线!
    课程介绍人工智能时代,计算机编程是一项基本技能,编程语言的学习已是大势所趋。本课程着重介绍大数据与人工智能的首选编程语言——Python语言。课程内容全面、由浅入深。从初......
  • linux安装python
    Linux安装python一、获取源码包我们访问这个网址,就可以看到全部的python下载方式:【https://www.python.org/downloads/】点击我们想要下载的python版本,这里我选择pyth......
  • docker部署的jenkins配置多jdk版本环境时,报错/var/jenkins_home/jdk-17.0.4/bin/java:
    背景:jenkins默认jdk版本1.8,某个项目需要使用jdk17,但jenkins从官网在线安装的jdk最高版本只有jdk1.9,手动安装jdk17完成后,在jenkins容器内执行手动安装的jdk17时,报错/var/jen......