zoukankan      html  css  js  c++  java
  • day6-基础 模块详解


     1.定义:

      1)模块:本质上就是一个python程序,封装成一个"模块",可以调用里面的方法,用来实现一个功能.逻辑上用来组织python代码.

      2)包:本质上是一个目录(必须带有一个"__init__.py"文件),逻辑上组织模块.

    2.使用方法:

       模块:

     1 #我们有两个程序"A"和"B".
     2 
     3 #A
     4 def login():
     5     print("Welcom login system")
     6 
     7 name = "Daniel" 
     8 #定义了两个变量
     9 
    10     #B.我们在B里调用A
    11 
    12 import A
    13 a.login()
    14 >>>Welcom login system
    15 print(a.name)
    16 >>>Daniel
    17 
    18    #还有一种调用方法
    19 from A import *                      #意思就是将模块A里的方法全部导入到当前
    20 login()
    21 >>>Welcom login system       #就是将"A"里的代码解释到"B",这样可以直接调用
    22 
    23 #但是呢这样有个问题,如果我在"B"里也定义了一个login呢?
    24 
    25 def login():
    26     print("in the B.py")
    27 login()
    28 >>>in the B.py                   #覆盖前面的login
    29 
    30     #既然有问题那么就能解决,但是最好不要这样使用
    31 from A import login as lg
    32 lg()
    33 >>>Welcom login system     #'as'定义一个别名
    View Code

      包:

    1 #现在假如我们有一个包"A",里面有一个包"B",还有一个a.py,B下的"__init_.py"有一行"print("Hello Programmer")"
    2 a.py
    3 import B
    4 >>>Hello Programmer 
    5 
    6 #所以说,如果导入一个包,就是在执行包下的"__init__.py"
    View Code

    以上呢都是在同级目录下操作,我们说点不一样的.

    同级目录下可以直接调用,不在一个目录下就无法调用.

    其实python是有环境变量的:

     1 import sys
     2 print(sys.path)
     3 >>>['E:\python\ATM', 'E:\python', 'D:\Anaconda3\python36.zip', 'D:\Anaconda3\DLLs', 'D:\Anaconda3\lib',......]
     4 #这就是我的环境变量
     5 
     6 #那么我将这个和调用模块有什么关系吗?并没有。。
     7 
     8 #开个玩笑,为什么我们调用sys啊os什么都可以直接调用,也并没有在我们的同级目录下,就是因为这个环境变量,调用时先看你的同级目录,没有就去环境变量找,一个一个找.
     9 
    10 #举个例子,加入我们有包"A",包"A"下有包"B",包"A"有个模块叫"hehe",那么我们如何在B下调用A里的hehe?
    11 
    12 hehe:
    13 a = print("in the hehe")
    14 test:
    15 import sys,os
    16 x = os.path.dirname(os.path.dirname(__file__))   #这里呢就是将A加入了python环境变量,这样就能找到hehe这个模块了
    17 print(x)
    18 sys.path.append(x)
    19 import hehe
    20 hehe.a
    21 
    22 #那这里我想直接'a'调用,怎么办呢?
    23 from hehe import a
    24 a
    25 #这样既可,这样就是解释hehe里的'a'方法到我现在的程序里,就等于在我现在的程序有一个a变量
    View Code

    3.import:

      #导入模块的本质就是在解释这个"**.py"的文件

      #导入包就是在执行下面的"__init__.py文件",所以其实并没有什么卵用

    4.模块分类

    • 标准库(python自带,例如sys,os,time) 
    • 开源模块(第三方开源模块)
    • 自定义模块(就是自己写的)

  • 相关阅读:
    用户控件的缓存技术之二【共三篇】
    .NET获取URL的各种方式及其区别
    图片上传封装类【包括图片上传和缩略图上传】.NET
    .NET抓取数据范例 抓取页面上所有的链接
    JQuery基础 学习的一些例子以及手册
    呵呵呵呵。。。系统还原了,终于可以用IE登陆百度了
    不用框架使用ajax 纯js使用ajax post,get范例及其区别
    用ashx还是aspx写ajax响应
    repeater绑定数组、哈希表、字典 ArrayList/HashTable,Dictionary为datasource
    Access数据库访问类 帮助类
  • 原文地址:https://www.cnblogs.com/wazy/p/7850331.html
Copyright © 2011-2022 走看看