zoukankan      html  css  js  c++  java
  • Python基础笔记系列十:模块

      本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!!

    • 模块

      #1.类比于java中的jar包,模块能让你能够有逻辑地组织你的Python代码段。
      #2.把相关的代码分配到一个模块里能让你的代码个更好用,更易懂。
      #3.模块也是Python对象,具有随机的名字属性用来绑定或引用。
      #4.简单来说,模块就是一个保存了Python代码的文件。模块能自定义函数,类和变量。模块里也能包含可执行的代码。

    • 模块引入
      python提供了很多第三方的模块可以引入,python标准安装包里的模块称为标准库。模块的引入主要有以下三种:
      ①引入模块
      import moduleName

      ②引入模块下的函数

      from moduleName import function1 , function2 ,...

      ③引入模块的所有函数

      from moduleName import *

      其中第一种引入模块的方式在使用模块时需要带上模块名(moduleName.methodName),如math.sqrt();
      引入模块后就可以使用模块里的方法了。

      例子:计算25的平方根

      1 import math
      2 r = math.sqrt(25)
      3 print r

      如果模块或者函数名字过长可以在import后使用as给该模块取个假名,之后可以通过“假名.函数”来使用模块里的函数。
      例子:

      1 import webbrowser as myweb
      2 myweb.open_new_tab("http://www.cnblogs.com/hyyq/")
    • 使用自定义模块
      任何Python程序hello.py(无主函数)都可以作为一个模块被另外一个Python程序test.py引入使用。
      例子:
      hello.py :

      1 #incoding:utf-8
      2 def hello():
      3     print 'import this module!'
      4 def bokeyuan():
      5     print 'http://www.cnblogs.com/hyyq/'

      test.py :

      1 #incoding:utf-8
      2 import hello #文件名作为模块名,不需要后缀.py哦~
      3 hello.hello()
      4 hello.bokeyuan()

      输出:

      1 import this module!
      2 http://www.cnblogs.com/hyyq/

      以上引入模块的程序和模块程序需要在同一目录下,局限性很大。如果想让模块可以被任何文件引用,可以调用os.path.append(模块文件所在目录)添加模块所在目录到系统里去。
      例子:假设文件结构

      ~/|模块    #文件夹模块
      —————|test.py #调用‘hello’模块的程序文件
      —————|hello #hello文件夹
      ———————|hello.py #模块文件
      ———————|hello.pyc #模块字节码文件

      test.py:

      #incoding:utf-8
      import sys 
      sys.path.append('./hello') #当前目录下的hello文件夹
      import hello #文件名作为模块名,不需要后缀.py哦~
      hello.hello()
      hello.bokeyuan()

      这种将文件目录加入系统里这种方式也有局限性,并且用起来也很麻烦。一般地,通用的告知python解释器到哪儿去找模块文件的方法有三:
      ①PYTHONPATH环境变量里增加模块文件路径
      ②.pth文件,文件里列出所有模块文件所在路径(放在python安装目录下即可)
      ③模块打包(推荐)

  • 相关阅读:
    BestCoder Round #71 (div.2) (hdu 5621)
    BestCoder Round #71 (div.2) (hdu 5620 菲波那切数列变形)
    BestCoder Round #69 (div.2) Baby Ming and Weight lifting(hdu 5610)
    BestCoder Round #70 Jam's math problem(hdu 5615)
    BestCoder Round #68 (div.2) tree(hdu 5606)
    poj 2299 Ultra-QuickSort(归并排序或是bit 树+离散化皆可)
    hdu 3874 Necklace(bit树+事先对查询区间右端点排序)
    HDU 4300 Clairewd’s message(KMP)
    HDU 3308 LCIS(线段树单点更新区间合并)
    PKU 3667 Hotel(线段树)
  • 原文地址:https://www.cnblogs.com/hyyq/p/8955518.html
Copyright © 2011-2022 走看看