持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
大家好,我是木大木大,因为疫情和环境原因啊,在家开始了自学python的路子,从此深坑加一人。后面我会每天持续更新一些学习python的过程,当然一开始就是一些基础啦,希望大家多多支持,莫嫌弃啦~
模块与包
1.1 模块
module .py
模块和模块之间相互调用怎么办?
1.1.1 模块导入
第一种:import 模块名
将某个模块的整体导入到当前模块中
第二种:from 模块名 import 成员名
将指定的成员导入到当前模块作用域中
第三种:from 模块名 import *
将指定模块的所有成员导入到当前模块作用域中
注意:导入进来的成员不要与当前模块成员名称相同(就近原则)
as 取别名
1.1.2 隐藏成员
在模块中以下划线_开头的属性不会被导入
1.1.3 模块变量
__file__:文件的绝对路径
__name__:模块自身的名字,可以判断是否为主模块
注意:当此模块作为主模块(第一个运行的模块)运行时,__name__绑定的是'__main__',而被其他模块导入时,绑定的是模块名
主模块叫做:__main__
非主模块:真名
在家是程序__main__
在外是模块,模块名
python中__main__的作用:
一个python文件如果是作为程序来运行时,那么__name__的值为__main__,如果是作为模块来运行时,它的__name__的值为模块名
main的标准语法:
if __name__ == '__main__':
print("我是作为程序执行的")
在哪里运行哪里就是主程序
快速写法:
pycharm中输入main,然后按住回车
1.1.4 模块分类
1.内置模块
2.标准库模块,安装python时已安装好且可以直接使用 time,random,可以用但是需要导入 import time...
3.第三方模块
安装第三方模块
通过pip install 模块名
换源安装:pip install 模块名 -i 国内源地址
查询已经安装的第三方模块:pip list
卸载第三方模块: pip uninstall 模块名
PIP国内源
1)清化大学
PIP源地址:https://pypi.tuna.tsinghua.edu.cn/simple
2)阿里云
PIP源地址:http://mirrors.aliyun.com/pypi/simple/
3)豆瓣
PIP源地址:http://pypi.douban.com/simple/
4)中国科学技术大学
PIP源地址:http://pypi.mirrors.ustc.edu.cn/simple/
5)华中科技大学
PIP源地址:http://pypi.hustunique.com/
4.用户自己编写的模块(可以作为别人的第三方模块)
1.2 包 package
语句——》函数——》模块——》包
包的定义:将模块以文件夹的形式进行分组管理,其实就是管理模块的
作用:让一些相关的模块组织在一起,使逻辑结构更加清晰
1.2.1 包的导入
from 包.模块名 import 成员名
# from package01.m01 import f1
# from package01.package02.m02 import f2
import package01.package02.m02 as m02
m02.f2()
1.2.2 --init--.py
init文件是包内必须存放的文件,会在包加载的时候被自动调用
包的核心作用:
把一些相同,类似功能的模块放到一个文件夹里面,进行统一的管理
在导入这个包里面的模块的时候,__init__.py的代码也会自动执行,所以利用这个机制,在__init__代码里面写上关于这个包内模块的使用说明
1.3 常用模块
1.3.1 sys
import sys
sys.modules 获取当前程序中引入的所有模块
sys.path 返回一个列表,列表中保存的是模块的搜索路径
sys.exit() 退出程序
sys.exit('过年了,下班了')
import pprint
pprint.pprint() 做简单格式化
1.3.2 os
系统交互模块
对操作系统进行访问
os.system() 可以用来执行操作系统的命令
os.getcwd() 获取当前python工作目录
os.mkdir() 建立文件夹,括号里面是文件夹的名字
os.rmdir() 删除文件夹,括号里面是文件夹的名字,只能删除空文件夹
os.remove() 删除文件,括号里面是文件的名字,如果不是同级目录,就复制它的绝对路径
os.rename() 重命名,括号里面两个参数,左边参数是原名,右边参数是新名
复制绝对路径的快捷键:点击你要复制的文件或者文件夹,Ctrl+shift+c
os.path.exists(path='同级目录下的文件'):判断文件是否存在
os.path.isfile(path='同级目录下的文件'):判断是否为文件
1.3 time
import time
time.time() # 时间戳
time.localtime() # 返回一个时间元组
time.sleep() # 休眠
while 1:
time.sleep(1)
print("hello world")
time.strftime() # 标识一个格式
%Y 年
%m 月
%d 日
print(time.strftime('%Y-%m-%d', time.localtime())) # 2022-09-29
%H 时
%M 分
%S 秒
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())) # 2022-09-29 20:09:16
1.4 random
随机
import random
random.random() # 生成一个0-1的随机数
random.randint(start,end) # start表示起点,end表示终点,可以在起点和终点的范围内随机一个整数,包头包尾的
random.choice() # 随机生成指定的元素
random.choices() # 有个k=数量 参数,可以生成指定个数的元素
random.uniform() # 可以生成一个指定范围内的随机小数
random.shuffle() # 打乱序列类型的顺序,注意不可变数据类型不能打乱
a = random.random()
print(a)
b = random.randint(1,3)
print(b)
c = random.choice(['剪刀','石头','布'])
print(c)
d = random.choices(['剪刀','石头','布'],k=2)
print(d)
e = random.uniform(1,10)
print(e)
li = [1,2,3,4,5,6,7,8,9,0]
random.shuffle(li)
print(li)
1.5 json
是一种兼容性很强的文件格式
import json
json.dumps() # 序列化输出,序列化之后是一个字符串类型
json_data = json.dumps([1,2,'小川'])
print(json_data) # [1, 2, "\u5c0f\u5ddd"]
print(type(json_data)) # <class 'str'>
json.loads() # 反序列化
data = json.loads(json_data)
print(data) # [1, 2, '小川']
print(type(data)) # <class 'list'>