目录
一、介绍
每一个.py文件(脚本文件)
二、创建模块
1.最好在模块中写这些内容
模块中的属性值 | |
函数 | 单独的功能 |
类 | 相似得功能组合 |
模块的测试代码 | 临时使用,导入时不会执行 if __name__='__mian__': ....代码1.... ....代码2.... .... |
model01.py
print('哈哈哈')
name = 'fx'
def say_hello():
print('hello')
print('嘿嘿嘿')
print('xxxxx')
model02.py
def test():
print('model02 test')
_age = 10
name = 'zs'
num = 20
__all__ = ['test', 'num']
2.__name__:
内置属性 写好了的,可以拿过来用
(1)当脚本运行的时候,等于'__main__'
(2)当模块运行的时候,等于模块名
model03.py
'''
__name__:内置属性 写好了的,可以拿过来直接使用
当脚本运行的时候,等于__main__
'''
name = 'ht'
print(__name__) # __main__
def sum_num(num1, num2):
ret = num1 + num2
return ret
import model03
print(model03.name)
# model03
# ht
__name__的作用:
(1)可以当测试代码
name = 'ht'
print(__name__)
def sum_num(num1, num2):
ret = num1 + num2
return ret
if __name__ == '__main__':
print('xxx') # xxx
if __name__ == '__main__':
ret = sum_num(2, 5)
print(ret) # 7
(2)可以当程序的入口
def test():
print('xxx1')
def test1():
print('xxx2')
def test2():
print('xxx3')
# test()
# test1()
# test2()
# 测试代码可以当做程序的入口
if __name__ == '__main__':
test()
test1()
test2()
三、使用模块的步骤
1.步骤
1.导入模块 | import 模块名 |
2.使用模块 | 模块名.变量名或函数名 |
2.注意
(1)第一次导入模块的时候,模块会从上往下执行一遍
(2)模块可以导入很多次,就不会再执行模块中的内容
# 第一次导入模块的时候,模块会从上往下执行一遍
import model01
model01.say_hello()
# 哈哈哈
# 嘿嘿嘿
# xxxxx
# hello
# 又导入一次模块,不会再执行
import model01
name1 = model01.name
print(name1)
# fx
3.模块的导入方式
import 模块名 as 别名 | 如果模块的名称太长,我们可以给这个模块起一个别名 |
import model01,model02........ | 一行可以导入多个模块 |
from 模块名 import 变量名或函数名 | 局部导入方式(从某个模块中导入某个功能) 就近原则: 离调用函数近的那个执行 |
from 模块名 import 变量名,函数名...... | 支持多行导入 |
from 模块名 import 变量名或函数名 as 别名 | 通过别名调用所有函数 |
from 模块名 import *
| Python不推荐使用 *表示所有内容· 因为 * 你不知道你导入的什么名字,很有可能会覆盖掉你已经定义过的名字,而且可读性非常差 |
__all__=['','',''] | __all__属性:只针对 from 模块名 import * 格式: |
建立几个模块的代码:
import model01 as m
m.say_hello()
# 哈哈哈
# 嘿嘿嘿
# xxxxx
# hello
# 二.导入多个模块
import model01, model02
model01.say_hello()
model02.test()
# hello
# model02 test
# from.....import
# from 模块名 import 变量名或函数名
# 只能使用test函数,不能使用其他
from model02 import test
test()
# model02 test
# 就近原则:离调用函数近的那个执行
import model02
def test():
print('demo')
test() # demo
# 调用自己的,不会调用model02中的
# from 模块名 import 变量名,函数名.....
from model02 import test, num
test()
print(num) # 20
# 通过别名调用函数
from model02 import test as t
t() # model02 test
# from ... import *
num = 30
from model02 import *
test() # model02 test
print(num) # 20
import model01
import model02
import model01, model02
import model01 as m
import model02 as s
print(m.name) # fx
print(s.num) # 20
# __all__:只用在 from 模块名 import *
from model02 import *
print(num) # 20
# print(_age) # 因为_age不在__all__里面,所以不能使用
# print(name)#因为name不在__all__里面,所以不能使用
四、Python的几个内置模块
1.random模块
random() | 产生一个大于等于0且小于1的小数 | [0.0,1.0) |
uniform(a,b) | 产生指定范围的随机小数 | |
randint(a,b) | 产生指定范围的随机整数 | [a,b] |
randrange(开始,停止,步长) | 产生指定范围的随机数 | [a,b) 左闭右开 |
choice(seq) | 序列可以为列表和字符串,随机返回序列中的元素 | |
shuffle() | 列表 洗牌,把列表打乱,再输出 |
'''
一、随机小数
1.random():产生一个大于0且小于1的小数 [0.0,1.0)
2.uniform(a,b):产生指定范围内的随机小数
3.randint(a,b):产生指定范围内的随机整数 a<=N<=b 两个端点值都包含 [a,b]
4.randrange(开始,停止,步长): 左闭右开 [a,b)
5.choice(seq): (列表,字符串) 随机返回序列中的元素
6.shuffle(): (列表) 洗牌 把列表打乱 再输出
此方法没有返回值
'''
import random
ret = random.random()
print(ret)
ret = random.uniform(1, 4)
print(ret)
ret = random.randint(1, 3) # 1,2,3
print(ret)
ret = random.randrange(1, 6, 2) # 1,3,5
print(ret)
lst = ['a', 'b', 'c']
ret = random.choice(lst)
print(ret)
# 6.shuffle():洗牌 把列表打乱 再输出
lst = ['a', 'b', 'c']
random.shuffle(lst)
print(lst)
2.sys模块
version | 返回解释器的版本号 |
path | 返回模块搜索路径 |
argv 接收命令行下的参数,参数以列表的形式保存 第一个参数是文件的名称 第二个参数开始才是文件要传的值 | 打印到命令行 |
import sys
# 返回解释器版本号
print(sys.version) # 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]
# 返回模块搜索路径
print(sys.path)
#['D:\\python\\day11', 'D:\\python\\day11', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages', 'C:\\Program Files\\JetBrains\\PyCharm 2018.2.2\\helpers\\pycharm_matplotlib_backend']
# 接收命令行(Terminal)下的参数,参数以列表的形式保存
import sys
# 接收命令行(Terminal)下的参数,参数以列表的形式保存
# 第一个参数是文件的名称
# 从第二个参数开始才是文件传的值
ret = sys.argv
ret1 = ret[0] # 接收文件名称
ret2 = ret[1] # 接收用户名
ret3 = ret[2] # 接收密码
print(ret1)
print(ret2)
print(ret3)
if ret2 == 'zs' and ret3 == '123':
print('登录成功')
else:
print('登录失败')
# 打印到命令行
3.time模块
(1)时间:
时间戳 | timestamp | 表示从1970年00:00:00开始到现在的秒数,返回的是float类型 | 计算机能识别的时间 |
时间元组 | strct_time | 元组里面有9个元素:年 月 日 时 分 秒 一周的第几天 一年的第几天 夏令时(-1,0,1) 夏令时是人为规定的时间,把时间调早一个小时,让人们早起早睡, 中国已经把夏令时给废弃了,默认为0 | 用来操作时间的 |
格式化的时间字符串 | Format String | '1999-12-6' | 人能看的懂得人能看的懂得 |
(2)一些操作:
- 睡眠时间 sleep()
- 时间戳 time()
- 时间元组
- 本地时间 localtime()
import time
# 睡眠时间
print('程序开始了...')
time.sleep(2) # 睡5秒
print('程序结束了...')
# 时间戳
ret = time.time()
print(ret / (365 * 24 * 60 * 60)) # 每次运行的时间都不一样
# 时间元组
ret = time.localtime() # 本地时间
print(ret)
(3)格式化时间字符串
模板:1999-01-11 23:12:12 1999/11/11
%y:年 99
%Y:年 1999
%m:月
%d:日
%H:时
%W:分
%S:秒
%x :当前的日期 月/日/年
%X:当前的时间 00:00:00
import time
# 时间格式化字符串
# 模板:1999-01-11 23:12:12 1999/11/11
# %y:年 99
# %Y:年 1999
# %m: 月 01
# %d: 日 12
# %H:时 %M %S
ret = time.strftime('%Y-%m-%d %H:%M:%S') # 当前的时间元组,传递的是时间元组
print(ret)
ret = time.strftime('%Y-%m_%d %x') # %x:当前日期 月/日/年
print(ret)
ret = time.strftime('%Y-%m_%d %X') # %X:当前时间 时/分/秒
print(ret)