老男孩教育python全栈第22期Day15笔记
day15
今日内容大纲
昨日内容回顾作业讲解
装饰器:完美的呈现了开放封闭原则。装饰器的本质:闭包。
def wraper(f):
def inner(*args, **kwargs):
"""执行被装饰函数之前的操作"""
ret = f(*args, **kwargs)
"""执行被装饰函数之后的操作"""
return ret
return inner
今日内容
自定义模块:
- 什么是模块:本质就是一个.py文件,封装语句的最小单位。
- 自定义模块:实际上就是定义.py文件,其中可以包含,变量定义,可执行语句,for循环,函数定义等等,它们统成为模块的成员。
模块的运行方式:
- 脚本方式:直接用解释器执行,或者pycharm中右键运行。
- 模块方式:被其他的模块导入。为导入它的模块提供资源(函数定义,类定义,变量等)。
__name__的使用:
- 在脚本方式运行时,_name__是固定的字符串:_main
- 在义模块方式导入时,__name__就是本模块的名字。
系统导入模块时的路径
- 内存中:如果之前成功导入模块,直接使用已经存在的模块
- 内置路径中:安装路径下:Lib
- PYTHONPATH:import时寻找模块的路径。(一般不用。)
- sys.path:是一个路径的列表。
如果都找不到,就报错。
动态修改sys.path。
os.path.dirname()获取某个路径的父路径。通常用于获取当前模块的相对路径。
import sys
import os
# print(os.path.dirname((__file__)) + '/aa')
sys.path.append(os.path.dirname((__file__)) + '/aa')
导入模块的多种方式:
- import xxx:导入一个模块的所有成员。
- import aaa, bbb:一次性导入多个模块的成员。不推荐这种写法,分开写。import os,sys 这俩是黄金搭档可以一起写。
- from xxx import a:从某个模块中导入指定的成员。
- from xxx import a,b,c:从某个模块中导入多个成员。
- form xxx import *:从一个模块中导入所以的成员。
import xxx 和 form xxx import *的区别
- 第一种方式在使用其中成员时,必须使用模块名作为前缀。不容易产生命名冲突。
- 第二种方式在使用其中成员时,不用使用模块名作为前缀,直接使用成员名即可。容易产生命名冲突。在后面定义的成员名生效(把前面的覆盖了)。
- 怎么解决名称冲突问题?
- 改用 import xxx。
- 自己避免使用同名。
- 使用别名解决冲突
- 使用别名:alias
- 给成员起别名,避免名称冲突。from my_modul import age as a
- 给模块器别名,目的简化书写。import my_modul as m
form xxx import *默认控制成员被导入
- 默认情况下,所以的成员都会被导入。
__all__是一个列表,用于表示本模块可以被外界使用的成员。元素时成员名组成的字符串。- 使用
__all__控制哪些成员可以被外界使用 只对于 from import 起作用
相对导入
针对某个项目中的不同模块之间进行导入,叫做相对导入。
只有一种格式:from 相对路径 import xxx
- 相对路径:包含了待你好的一个相对路径。
- .表示的是当前的路径。
- ..表示的是父路径
- ...表示的是父路径的父路径
# 相对导入同项目下的模块
# from ..z import zz # 容易象外界暴露zz模块
from ..z.zz import *
# 不使用相对导入的方式,导入本项目中的模块
# 通过当前文件的路径找到你想导入的z的路径
import os,sys
sys.path.append(os.path.dirname(os.path.dirname(__file__)) + '/z')
from zz import *
常用模块:time,datatime,random
- random
- 此模块提供了随机数获取的相关的方法。官方文档(C:\Users\libo\AppData\Local\Programs\Python\Python36\Doc)
- random.random():获取[0.0,1.0)范围内的浮点数。
- random.randint(a,b):获取[a,b]范围内的一个整数。
- random.uniform(a,b):获取[a,b)范围内的浮点数。
- random.shuffle(x):把参数指定的数据中的元素混洗,其中参数为变的数据类型。
- random.sample(x,k):从x中随机抽取k个数据,组成一个列表返回。
- random
今日总结
函数总结思维导图
GitHub仓库
https://github.com/libo-sober/LearnPython/tree/master/day12预习内容
老男孩教育python全栈第22期Day15笔记的更多相关文章
- 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】
点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...
- 老男孩教育python全栈第九期视频
失效了在下面评论即可,会及时更新.python9期已全部更新完 链接: https://pan.baidu.com/s/1VV8_ZyVasK05iKd7QMxO-A 密码: 9zau
- python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)
python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...
- 老男孩最新Python全栈开发视频教程(92天全)重点内容梳理笔记 看完就是全栈开发工程师
为什么要写这个系列博客呢? 说来讽刺,91年生人的我,同龄人大多有一份事业,或者有一个家庭了.而我,念了次985大学,年少轻狂,在大学期间迷信创业,觉得大学里的许多课程如同吃翔一样学了几乎一辈子都用不 ...
- python全栈开发中级班全程笔记(第二模块、第四章(三、re 正则表达式))
python全栈开发笔记第二模块 第四章 :常用模块(第三部分) 一.正则表达式的作用与方法 正则表达式是什么呢?一个问题带来正则表达式的重要性和作用 有一个需求 : 从文件中读取所有联 ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
- Python全栈开发第二期课表
day01-python 全栈开发-基础篇 01 开课介绍 01:55:13 ★ 02 开课介绍02 01:28:31 ★ 03 开课介绍03 00:22:55 ...
- python全栈开发 * 22 面向对象 知识点汇总 * 180703
22 面向对象 -----属性,类方法,静态方法,反射一.属性1.属性的定义:将方法伪装成属性,虽然在代码层面上没有任何高深之处,但让其看起来更合理. (类似于属性的方法)class Person: ...
- python全栈开发中级班全程笔记(第二模块)第一部分:文件处理
第二模块 第一部分:文件处理与函数 #插曲之人丑就要多读书:读书能够提高个人素质与内涵,提升个人修养与能力,以及层次的提升. 推荐书籍:追风筝的人.白鹿原 电影:阿甘正传.辛德勒的名单 第一节:三 ...
随机推荐
- 后端排序时去掉element表格排序的null状态
经常会遇到远程排序,需要去掉null状态的排序,当设置sortable='custom'时,设置sort-orders为['ascending', 'descending']是不生效的.然后查到了一种 ...
- jQuery的事件与 动画
什么是事件: 事件的本质是委托. Jquery的 方法: $().css(); $().click(); 等等. 鼠标的事件: 区别在于:mouseover与mouseout再进入或离开后会执行这两个 ...
- LeetCode 91,点赞和反对五五开,这题是好是坏由你来评判
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题的第57篇文章,我们一起来看看LeetCode第91题,解码方法(Decode ways). 这道题官方给定的难度 ...
- SpringMVC常见问题Error configuring application listener of class org.springframework.web.context.ContextLoaderListenejava.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
六月 20, 2018 9:43:34 下午 org.apache.catalina.core.StandardContext listenerStart 严重: Error configuring ...
- windows安装cnpm步骤
1.首先前往nodejs官网下载nodejs 2.安装nodejs 3.打开cmd,输入npm -v,检查npm是否安装成功.成功返回的话返回输出版本号 4.安装cnpm,输入npm install ...
- ms14-064漏洞复现
本博客最先发布于我的个人博客,如果方便,烦请移步恰醋的小屋查看,谢谢您! 这是我在实验室学习渗透测试的第五个漏洞复现,一个多小时便完成了.学长给的要求只需完成查看靶机信息.在指定位置创建文件夹两项操作 ...
- Vue管理系统前端系列一vue-cli4.x 初始化项目
目录 项目介绍 技术基础 开发环境 安装工具 快速原型开发 创建项目 配置相关说明 目录结构 项目介绍 lion-ui 是一个基于 RBAC 的管理系统前端项目,采用 vue 和 element-ui ...
- 2020.5.25 第五篇 Scrum冲刺博客
Team:银河超级无敌舰队 Project:招新通 项目冲刺集合贴:链接 目录 一.每日站立会议 1.1 会议照片 1.2 项目完成情况 二.项目燃尽图 三.签入记录 3.1 代码/文档签入记录 3. ...
- c++: internal compiler error: Killed (program cc1plus)
转自https://blog.csdn.net/qq_27148893/article/details/88936044 这是在开发板上编译opencv的时候报了一个错,主要是在编译过程中,内存不够造 ...
- Vue的数据响应式
getter和setter怎么用 示例代码 getter ,关键词为 get ,用于获取一个值.定义时为函数,但是使用时不用加括号. setter 用于对数据的改写 Object.defineProp ...