zoukankan      html  css  js  c++  java
  • Python 模块

    模块基本概念

    模块是从逻辑上组织python代码的形式
    当代码量变得相当大的时候,最好把代码分成一些有组织的代码段,前提是保证它们的彼此交互
    这些代码片段相互间有一定的联系,可能是一个包含数据成员的方法类,也可能是一组相关但彼此独立的操作函数
     
    创建模块
    模块物理层面上组织模块的方法是文件,每一个以.py作为结尾的python文件都是一个模块
    模块的名称切记不要与系统中已存在的模块重名
    模块文件名字去掉后面的扩展名(.py)即为模块名
     
    导入模块(import)
    使用import导入模块
    模块被导入后,程序会自动生成pyc的字节码文件以提升性能
    模块属性通过”模块名,属性”的方法调用
    如果仅需要模块中的某些属性,也可以单独导入
    >>> import sys
    >>> import string
    >>> string.digits
    '0123456789'
    >>> from random import randint
    >>> randint(1,10)
    2
    >>> randint(1,10)
    8
    >>> randint(1,10)
    5
    #!/usr/bin/env python
    
    import time
    
    for i in range(10):
        print  i,
        time.sleep(0.5)
    
    
    
    /usr/bin/python2.6 /root/PycharmProjects/untitled10/time.py
    0
    Traceback (most recent call last):
      File "/root/PycharmProjects/untitled10/time.py", line 3, in <module>
        import time
      File "/root/PycharmProjects/untitled10/time.py", line 7, in <module>
        time.sleep(0.5)
    AttributeError: 'module' object has no attribute 'sleep'
    
    Process finished with exit code 1

    choice可以直接用 不用写random但是random不能使用

    >>> string.upper('abcdef')
    'ABCDEF'
    >>> from random import choice
    >>> choice('abcdef')
    'f'
    >>> choice('abcdef')
    'd'
    >>> random.choice('abcdef')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'random' is not defined

    起别名

    >>> import random as rdm
    >>> rdm.choice('123123')
    '3'
    >>> rdm.choice('123123')
    '2'

    模块加载(load)

    一个模块只被加载一次,无论被导入多少次
    只加载一次可以阻止多重导入时,代码被多次执行
    如果两个文件相互导入,防止无限相互加载
    模块加载时,顶层代码会自动执行,所以只将函数放入模块的顶层是良好的变成习惯
    导入的时候模块的代码会被执行
    #!/usr/bin/env python
    
    print __name__
    
    /usr/bin/python2.6 /root/PycharmProjects/untitled10/foo.py
    __main__
    
    Process finished with exit code 0
    
    #!/usr/bin/env python
    
    import foo
    
    /usr/bin/python2.6 /root/PycharmProjects/untitled10/bar.py
    foo
    
    Process finished with exit code 0

    独立执行和导入的差别

    直接运行了就是main 被其它import的就是foo
    #!/usr/bin/env python
    
    def pstar(num = 20):
        return '*' * num
    
    if __name__ =='__main__':
        print pstar()
    
    
    /usr/bin/python2.6 /root/PycharmProjects/untitled10/main1.py
    ********************
    
    Process finished with exit code 0
  • 相关阅读:
    天梯赛练习 L3-011 直捣黄龙 (30分) dijkstra + dfs
    PAT甲级练习 1087 All Roads Lead to Rome (30分) 字符串hash + dijkstra
    天梯赛练习 L3-010 是否完全二叉搜索树 (30分) 数组建树模拟
    天梯赛练习 L3-008 喊山 (30分) bfs搜索
    天梯赛练习 L3-007 天梯地图 (30分) Dijkstra
    1018 Public Bike Management (30分) PAT甲级真题 dijkstra + dfs
    PAT天梯赛练习 L3-004 肿瘤诊断 (30分) 三维BFS
    课堂实验(计算1!+2!+...+100!)
    39页作业第7题
    39页作业(还款年限—月还款额表)
  • 原文地址:https://www.cnblogs.com/weiwenbo/p/6564515.html
Copyright © 2011-2022 走看看