python学习No6

python学习No6装饰器计算一段代码执行时间 importtime time 模块可以获取当前时间 代码运行之前 获取时间 start time time time 模块里的 time 方法 可以获取当前时间的时间戳 时间戳是从 1970 01 0100 00 00 中国是 UTC 8 到现在 转换成国际时间要减 8 的秒数 print start start x 1foriinrange 1 x iprint x end time time print

装饰器

计算一段代码执行时间

import time #time模块可以获取当前时间 #代码运行之前,获取时间 start=time.time() #time模块里的time方法,可以获取当前时间的时间戳 #时间戳是从1970-01-01 00:00:00 中国是UTC+8 到现在(转换成国际时间要减8)的秒数 print('start=',start) x =1 for i in range(1,): x+=i print(x) end=time.time() print('代码运行时间:',end-start) start=time.time() print('hello') time.sleep(3)#休眠代码 print('word') end=time.time() print('代码运行时间:',end-start) 

装饰器使用

#装饰器 import time def cal_time(fn): print('fn={}'.format(fn)) def inner(): start=time.time() fn() end=time.time() print('代码耗时',end-start) return inner @cal_time #第一件事调用cal_time立马调用#第二件事,把demo传给fn def demo(): x=0 for i in range(1,10000): x+=1 print(x) #第三件事:当再次调用demo函数时,此时的demo已经不是demo了 #而是inner demo() print('装饰后的demo函数是{}'.format(demo)) #装饰后的demo函数是 
   
     .inner at 0x000001A2FF1A7B80> 
    

装饰器的详解

import time def cal_time(fn): print('fn={}'.format(fn)) def inner(x,*args,kwargs): start=time.time() s=fn(x) end=time.time() #print('代码耗时',end-start) return s,end-start return inner @cal_time def demo(n): x=0 for i in range(1,10000): x+=1 return x m=demo(10000,'good',y='hello') print('m的值为',m)#装饰器改变了原有函数传参,可以传多值 
#玩游戏代码,现要求有防沉迷系统,使10点后玩不了,所以多传参clock def play_game(name,game,clock): if clock > 22: print('太晚了,不能玩了') print('{}正在玩{}'.format(name,game)) play_game('张三','王者荣耀',12) play_game('李四','英雄联盟',23) print('-------') #以上并非最佳方案,由于开放封闭原则,最好不要动前面完成的代码 #故我i们使用装饰器不改变play_qame函数 def can_play(fn): def inner(x,y,*args,kwargs): #if args[0]>22: clock=kwargs.get('clock',23)#如果有clock,就用clock,如果没有就用默认值23 if clock>22: print('太晚了,睡觉吧') else: fn(x,y) return inner @can_play def play_game(name,game): print('{}正在玩{}'.format(name,game)) play_game('张三','王者荣耀',a='hello',b='good',clock=12) play_game('李四','英雄联盟',23) 

模块

  • 在python里的一个py文件,就可以理解为模块
  • 不是所有的py文件都能作为一个模块来导入
  • 如果想要让一个py文件能够被导入,模块名字必须要遵守规则(数字字母下划线)
  • python为了开发,提供很多内置模块
  • 格式1:import 模块名称
    调用:模块名.模块中的函数

import time print(time.time()) 
  • 格式2:from 模块名 import 函数名,导入模块里的一个方法
from random import randint print(randint(0, 2))#不用写random.randint() #并没有导入random,只是拿出了randint 
  • 格式3:from 模块名 import * 导入这个模块的所有(所有并不是真正的所有)方法
from math import * print(pi)#不用写成math.pi #本质史读取模块中__all__属性,看这个函数中定义了那些属性和变量 #如果模块中没有定义__all__才会导入所有不以_开头的变量 #以一个下划线开始的变量,建议只在本模块里使用,别的模块里不要导入进去 #但是用格式1还是能用,建议别这样 #如果定义了,__all__以外的就使用不了 #比如假设__all__中没有pi则使用pi时就会报错,不可使用 #想使用就得用格式1 
  • 起别名
import datetime as dt#导入模块并起别名 print(dt.MAXYEAR) #导入某个模块的某个方法,并起一个别名 from copy import deepcopy as dp#from 模块名 import 函数名 as 别名 dp(['hello','good',[1,2,3],'hi'])#深复制 

一些模块

os
import os #获取操作系统的名字(windows==>nt或者非windows==>posix) print(os.name) #拿到路径的分隔符 print(os.sep) #windos:\ 非windows:/ #os中的path比较常用 #abspath===>获取文件绝对路径 print(os.path.abspath('模块.py')) #isdir判断是否是文件夹 print(os.path.isdir('模块.py')) #isfile判断是否是文件 print(os.path.isfile('模块.py')) #exists判断是否存在 print(os.path.exists('模块.py')) print('模块.py'.rpartition('.')) print(os.path.splitext('模块.py')) 
sys

sys模块:系统相关的功能

import sys print('hello') #查找模块的路径 print(sys.path) sys.stdin #可以像input一样,接收用户的输入,和input相关 sys.stdout #标准输出,修改sys.stdout 可以改变默认输出位置 sys.stderr#修改sys.stderr 可以改变错误的默认输出位置 #退出程序,和内置函数exit一致 sys.exit() print('hehehe') 

在这里插入图片描述

math

math模块:数学计算相关的模块

import math #求阶乘 print(math.factorial(6)) #向下取整 print(math.floor(12.98)) #向上取整 print(math.ceil(14.22)) #算幂运算 print(math.pow(2,10)) print(math.sin(math.pi/6)) 
random

random模块:和随机有关的代码

import random #randint(a,b) 用来生成[a,b]的随机整数 print(random.randint(2,9)) #randrange(a,b) 用来生成[a,b)的随机整数 print(random.randrange(2,9)) #random()用来生成[0,1)的随机浮点数 print(random.random()) #choice用来在可迭代对象中随机抽取一个数据 print(random.choice(['aa','ss','dd','ff'])) #sample 用来在可迭代对象中随机抽取n个数据 print(random.sample(['aa','ss','dd','ff'],2)) 

在这里插入图片描述

datetime

datetime模块:主要显示日期时间,这里主要涉及date类,用来显示日期;time类显示时间;datetime类用来显示日期时间;timedelta类用来计算时间

import datetime as dt print(dt.datetime.now()) 

在这里插入图片描述

time

time模块:操作时间,time模块不仅可以显示日期,还可以控制程序,让程序暂停(sleep函数)

import time print(time.time()) print(time.strftime("%Y-%m-%d %H:%M:%S")) print(time.asctime()) 

在这里插入图片描述

calendar

calendar模块:

import calendar c=calendar.calendar(2019)#打印日历 print(c) 

在这里插入图片描述

hashlib、hmac

hashlib模块和hmac模块:用来加密

import hashlib #hashlib模块主要支持两个算法 md5和sha加密 #加密方式:单向加密:只用加密过程,不能解密md5/sha 对称加密 非对称加密rsa #需要加密的内容必须转换为二进制 x=hashlib.md5()#生成一个md5对象 x.update('abc'.encode('utf8'))#===>x=hashlib.md5('abc'.encode('utf8')) print(x.hexdigest()) #'abc'========>cd24fb0d6963f7d28e17f72 #sha加密 h1=hashlib.sha1('1234'.encode()) print(h1.hexdigest()) h2=hashlib.sha224('1234'.encode())#224位 一个16进制占4位 print(h2.hexdigest()) h3=hashlib.sha256('1234'.encode()) print(h3.hexdigest()) h4=hashlib.sha384('1234'.encode()) print(h4.hexdigest()) import hmac #hmac加密可以指定密钥 h=hmac.new('h'.encode(),'你好'.encode(),digestmod='MD5') result=h.hexdigest() print(result) 
uuid

uuid模块:用来生成一个全局唯一的模块

import uuid print(uuid.uuid1())#32个字符 每一个字符有16个选择 #print(uuid.uuid2)python不能用 print(uuid.uuid3(uuid.NAMESPACE_DNS,'lisi'))#生成固定的uuid print(uuid.uuid5(uuid.NAMESPACE_DNS,'lisi'))#生成固定的uuid print(uuid.uuid4())#最常用,随机 

在这里插入图片描述

pip命令的使用及其配置

安装python时,会同时安装pip软件,可以用来查找下载安装卸载第三方资源包

检查是否配置好pip:

在这里插入图片描述
在这里插入图片描述
然后windows+R,输入cmd打开
在这里插入图片描述
图所示就是环境变量没有配置,在此电脑右击打开属性
在这里插入图片描述










在这里插入图片描述
然后在用户变量或者系统变量中找到path,编辑
在这里插入图片描述
完成后再到命令提示符中查看:
成功了!
在这里插入图片描述
注意:有些时候不能在c盘python文件夹scripts中找到pip,建议重装。












使用pip

下载安装包
卸载安装包
其他命令

使用自定义模块

#__name__:当直接运行py时,值时__main__ #如果杂蒽个py文件作为模块导入时,值是文件名 if __name__=='__main__': print('模块中的name',__name__) 

包的使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204892.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:17
下一篇 2026年3月19日 下午7:18


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号