python面向对象、模块讲解
(1)模块的介绍:
1、什么是模块
模块是一系列功能的集合体
常见的模块形式(自定义模块、第三方模块、内置模块):
1、一个module.py文件就是一个模块,文件名是module.py,而模块名是module
2、一个包含有__init__.py文件的文件夹也是模块
3、已被编译为共享库或DLL的C或C++扩展
4、使用C编写并链接到python解释器的内置模块
2、为什么要用模块
1、用第三方或者内置的模块是一种拿来主义,可以极大地提升开发效率
2、自定义模块即将我们自己程序中需要用到的公共的功能写入一个python文件
然后程序的各部分组件可以通过导入的方式来引用/重用自定义模块中的功能
3、如何用模块
导入的方式有两种
import 模块名 调用:模块名.函数名()
from 模块名 import 具体的功能函数名 调用:函数名()
自己补充:
run文件:from spam import * *默认导入模块里的所有功能
spam模块文件:__all__ =['read1',‘read12’] [函数1,函数2,。。。]可以限定run文件里*的调用范围
(2)模块的实际应用
当前的执行文件
x=1
y=2
首次导入模块发生了3件事:
1、以模块为准创造一个模块的名称空间
2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
3、在当前执行文件中拿到一个模块名
import spam
之后的重复导入会直接引用之前创造好的结果,不会重复执行模块的文件
import spam #spam=spam=模块名称空间的内存地址
spam.名字
print(x)
spam.x
print(spam.money)
print(spam.read1)
print(spam.read2)
print(spam.change)
money=11111111111111
spam.read1()
def read1():
print('执行文件的read1')
spam.read2()
spam.change()
print(spam.money)
print(money)
import spam as sm
print(sm.money)
import time,spam,os,sys
import spam
import os
import sys
import spam
spam.money
from ... import ...首次导入也发生了三件事:
1、以模块为准创造一个模块的名称空间
2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
3、在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用
x=1
y=2
from spam import money,read1
money=10
print(money)
print(read1)
from .... import ... 对比 import 。。。
优点:不用加前缀,代码更为精简
缺点:容易与当前执行文件中名称空间中的名字冲突
相同点:
1、都会执行模块对应的文件,都会产生模块的名称空间
2、调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关
不同点
1、一种需要加前缀,一种不需要加前缀
from spam import money,read1,read2,change
money=111111111111111111
read1()
def read1():
print('当前执行文件的read1',money)
read1()
def read1():
print('当前执行文件的read1',money)
read2()
change=1
change()
print(money)
from spam import money
from spam import read1
from spam import read2
from spam import change
from spam import *
print(money)
print(read1)
print(change)
print(read2)
(3)面向过程编程介绍:
面向过程编程
核心过程二字,过程指的是解决问题的步骤,即先干什么、再干什么、然后干什么...
基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式
优点
复杂的问题流程化、进而简单化
缺点
扩展性极差
(4)面向过程编程的应用
# 接收用户输入用户名,进行用户名合法性校验,拿到合法的用户名
def check_user():
while True:
name = input('username>>').strip()
if name.isalpha():
return name
else:
print('用户名必须为字母,傻叉')
# 接收用户输入密码,进行密码合法性校验,拿到合法的密码
def check_pwd():
while True:
pwd1=input('password>>: ').strip()
if len(pwd1) < 5:
print('密码的长度至少5位')
continue
pwd2=input('again>>: ').strip()
if pwd1 == pwd2:
return pwd1
else:
print('两次输入的密码不一致')
def check_age():
pass
# pwd=check_pwd()
# print(pwd)
# 将合法的用户名与密码写入文件
def insert(user,pwd,age,path='db.txt'):
with open(path,mode='a',encoding='utf-8') as f:
f.write('%s:%s:%s\n' %(user,pwd,age))
def register():
user=check_user()
pwd=check_pwd()
age=check_age()
insert(user,pwd,age)
print('register successfull')
register()
# 用户功能层
def register():
while True: # 检测用户名
name=input('username>>: ').strip()
#检测用户是否重复,如果重复了则重新输入,否则break
res=check_user_interface(name)
if res:
print('用户存在')
else:
break
while True: # 检测密码
pwd1 = input('pwd1>>: ').strip()
pwd2 = input('pwd2>>: ').strip()
if pwd1 != pwd2:
print('两次输入密码不一致,重新输入')
else:
break
def tell_info():
name=input('>>: ').strip()
info=select(name)
print(info)
# 接口层
def check_user_interface(name):
res = select(name) # res=['egon','123']
if res:
return True
else:
return False
# 数据处理层
def select(name):
with open('db.txt', 'r', encoding='utf-8') as f:
for line in f:
info = line.strip('\n').split(':') #info=['egon','123']
if name == info[0]:
return info
python面向对象、模块讲解的更多相关文章
- python itertools 模块讲解
1.介绍itertools 是python的迭代器模块,itertools提供的工具相当高效且节省内存. 使用这些工具,你将能够创建自己定制的迭代器用于高效率的循环. - 无限迭代器 itertool ...
- python -ConfigParser模块讲解
configParser 模块用于操作配置文件 注:Parser汉译为“解析”之意. 配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键= ...
- Python Requests模块讲解4
高级用法 会话对象 请求与响应对象 Prepared Requests SSL证书验证 响应体内容工作流 保持活动状态(持久连接) 流式上传 块编码请求 POST Multiple Multipart ...
- python 面向对象· self 讲解
self就是参数 以形参形式 5.self是什么鬼? self是一个python自动会给传值的参数 那个对象执行方法,self就是谁. obj1.fetch('selec...') self=obj1 ...
- 小白的Python之路 day5 shelve模块讲解
shelve模块讲解 一.概述 之前我们说不管是json也好,还是pickle也好,在python3中只能dump一次和load一次,有什么方法可以向dump多少次就dump多少次,并且load不会出 ...
- 自学Python之路-Python基础+模块+面向对象+函数
自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python 1.1 自学Python1.1-简介 1.2 自学Python1.2-环境的 ...
- python基础,函数,面向对象,模块练习
---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? # [] {} () None 0 2,位和字节的关系? # ...
- Python标准模块--threading
1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...
- python基础-模块
一.模块介绍 ...
- Python 面向对象 基础
编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...
随机推荐
- 1.2 the structure of a compiler
Compiler 1.2 the structure of a compiler Compiler : analysis and synthesis syntactically 语法上的 sema ...
- Centos安装iptables防火墙
一.安装说明: 1.因为centos7.0及以上版本就默认安装了firewall防火墙,但有时候根据项目实际所需,服务器上还是需要安装iptables,以下就是具体的安装步骤: 2.因阿里云在服务器外 ...
- 一键部署基于SVN开源版本控制系统
https://market.azure.cn/Vhd/Show?vhdId=11889&version=12961 产品详情 产品介绍Subversion作为新一代的开源版本控制工具,Sub ...
- ADO.Net——防止SQL注入攻击
规避SQL注入 如果不规避,在黑窗口里面输入内容时利用拼接语句可以对数据进行攻击 如:输入Code值 p001' union select * from Info where '1'='1 //这样可 ...
- (转载)WPF:DataGrid设置行、单元格的前景色
WPF:DataGrid设置行.单元格的前景色 0. 说明 /********************************** 本示例实现功能1.DataGrid基本操作2.列标题样式3.内容居中 ...
- 【Python图像特征的音乐序列生成】图像特征在旋律生成中有什么用
jishude 首先援引一个资料网页:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2016/03/01/%E9%9F%B3%E4%B9%90%E ...
- iOS 微信和支付宝关于回调处理
在支付这一块,发现讲支付集成的比较多,但是关于支付后回调处理的不多见,(当时因为这个问题懵逼了好久)就自己总结一下, 1.支付宝回调 支付宝的回调想对来说比较简单一些,因为支付宝的回调就在调起支付宝的 ...
- 解决在matplotlib使用中文的问题
原生的matplotlib并不支持直接使用中文,而需要修改一下相应的文件,上网搜了下,找到一个最简洁的办法. NO.1 找到matplotlibrc文件 C:\Python26\Lib\site-pa ...
- javaweb基础(16)_jsp指令
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
- unity3d sqlite数据库的读写方法
首先,我们要从unity的安装路径中复制mono.data.sqlite.dll和sqlite3.dll两个动态链接库到untiy的plugins目录下,如下图所示: 使用navicat for sq ...