(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面向对象、模块讲解的更多相关文章

  1. python itertools 模块讲解

    1.介绍itertools 是python的迭代器模块,itertools提供的工具相当高效且节省内存. 使用这些工具,你将能够创建自己定制的迭代器用于高效率的循环. - 无限迭代器 itertool ...

  2. python -ConfigParser模块讲解

    configParser 模块用于操作配置文件 注:Parser汉译为“解析”之意. 配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键= ...

  3. Python Requests模块讲解4

    高级用法 会话对象 请求与响应对象 Prepared Requests SSL证书验证 响应体内容工作流 保持活动状态(持久连接) 流式上传 块编码请求 POST Multiple Multipart ...

  4. python 面向对象· self 讲解

    self就是参数 以形参形式 5.self是什么鬼? self是一个python自动会给传值的参数 那个对象执行方法,self就是谁. obj1.fetch('selec...') self=obj1 ...

  5. 小白的Python之路 day5 shelve模块讲解

    shelve模块讲解 一.概述 之前我们说不管是json也好,还是pickle也好,在python3中只能dump一次和load一次,有什么方法可以向dump多少次就dump多少次,并且load不会出 ...

  6. 自学Python之路-Python基础+模块+面向对象+函数

    自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python    1.1 自学Python1.1-简介    1.2 自学Python1.2-环境的 ...

  7. python基础,函数,面向对象,模块练习

    ---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? #  [] {} () None 0 2,位和字节的关系? # ...

  8. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  9. python基础-模块

    一.模块介绍                                                                                              ...

  10. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

随机推荐

  1. C# 初始学习心情

    当听说需要转做.net的时候.内心是忐忑不安的.因为突然从前端转向后端,几乎完全颠倒了...一个注重界面实现功能.一个注重逻辑的开发,然并卵,服从需求吧. 虽说公司需要你转.但是时间是不允许的,所以只 ...

  2. Nginx和Apache服务器上配置反向代理

    在实际项目过程中,由于网站要用到一个在线编辑器(个性化的在线编辑软件),需要跨域进行通信!由于跨域通信较多,所以当时就想到在网站服务器上代理编辑软件的请求! 这就是“反向代理”的实际需求! 一.Ngi ...

  3. 设置DIV随滚动条滚动而滚动

    有段时间没有碰Web端了,最近做了个功能,需要做个DIV随滚动条滚动而滚动,mark一下: 源码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...

  4. BZOJ 1806: [Ioi2007]Miners 矿工配餐

    ime Limit: 10 Sec  Memory Limit: 64 MBSubmit: 910  Solved: 559[Submit][Status][Discuss] Description ...

  5. SAP Cloud for Customer客户主数据的地图集成

    点击这个按钮可以通过地图的方式查看C4C客户在地图上的地理位置: 只需要在这个客户的地址栏里维护上天府软件园的经度和维度: 就能够在C4C的客户列表页面里显示该客户在地图上的位置: 要获取更多Jerr ...

  6. 修改字体篇:css3@font-face@字体转换@浏览器字体支持

    @font-face { font-family: 'MyWebFont'; src: url('webfont.eot'); /* IE9 Compat Modes */ src: url('web ...

  7. UVA 11997 K Smallest Sums (多路归并)

    从包含k个整数的k个数组中各选一个求和,在所有的和中选最小的k个值. 思路是多路归并,对于两个长度为k的有序表按一定顺序选两个数字组成和,(B表已经有序)会形成n个有序表 A1+B1<=A1+B ...

  8. PWD简介与妙用(一个免费、随时可用的Docker实验室)

    转载自 https://baiyue.one/archives/472.html 本文介绍下 PWD 的历史,并依据本站最近学习心得,经过多次尝试,终于打通了 Docker 与常规宝塔面板搭建,因此, ...

  9. python_84_os模块

    'os模块:提供对操作系统进行调用的接口' import os print(os.getcwd())#获取当前脚本工作目录,即当前Python脚本工作的目录路径 os.chdir('C:\\Users ...

  10. BCB:AnsiString BSTR WideString

    WideString wstr;AnsiString astr;wchar_t *wp;//或者 BSTR wp; wp=wstr.c_bstr(); //WideString转化为BSTRwstr= ...