zoukankan      html  css  js  c++  java
  • Python基础学习2---模块

    模块

    你已经学习了如何在你的程序中定义一次函数而重用代码。如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块。模块基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以 .py 为扩展名。

    import sys
    print 'The command line arguments are:'
    for i in sys.argv:
        print i
    #print '
    
    The PYTHONPATH is', sys.path, '
    '

    导入sys 模块后 使用for in 遍历sys里面的argv数组 讲结果依次输出, 默认是程序路径为列表的第一个参数。

    字节编译的.pyc文件

    输入一个模块相对来说是一个比较费时的事情,所以Python做了一些技巧,以便使输入模块更加快一些。
    一种方法是创建 字节编译的文件 ,这些文件以 .pyc 作为扩展名。字节编译的文件与Python变换程序的中
    间状态有关。当你在下次从别的程序输入这个模块的时
    候, .pyc 文件是十分有用的——它会快得多,因为一部分输入模块所需的处理已经完成了。另外,这些
    字节编译的文件也是与平台无关的。所以,现在你知道了那些 .pyc 文件事实上是什么了

    from import 语句

    如果想要输入argv变量到你的程序中(避免每次都要打开sys) 那么就可以使用from sys import argv语句 如果你想要输入所有sys模块使用的名字 那么还可以使用

    from sys import *语句, 这个语句适用于所有模块。

    模块的_name_

    每一个模块都有一个名称,在模块中可以通过语句来找出模块的名称,这在一个场合非常适用--当一个模块被第一次输入的时候,这个模块的主快就会被执行

    假如我们只想在程序本身被适用的时候运行主块,而它在被别的模块输入的时候不运行主块,我们可以通过模块的_name_属性来完成。

    自定义模块

    自定义模块就是适用自己的方法来写一个模块,在模块内我们封装一些代码,然后在其他地方可以直接import来进行导入使用。

    def sayhi():
    print 'Hi, this is mymodule speaking.'
    version = '0.1'
    # End of mymodule.py
    1 import mymodule
    2 mymodule.sayhi()
    3 print 'Version', mymodule.version

    这样就可以导入一个mymodule文件进行使用了,代码mymodule.version 就是通过点语句来获取具体的属性值。

    同时也可以使用from .... import方法进行构造:

    1 from mymodule import sayhi, version
    2 # Alternative:
    3 # from mymodule import *
    4 sayhi()
    5 print 'Version', version

    dir()函数 

    接触过linux的应该都知道dir的命令意思,就是列举模块定义的标识符。标识符有函数、类和变量。

    当我们需要为dir()提供一个模块名的时候, 它返回模块定义的名称列表。如果不提供参数那么就会显示当前模块中定义的名称列表。

    使用dir函数

    在python中输入

    import sys

    dir(sys) 

    即可显示sys模块中定义的名称列表。

    1 >>> dir(sys)
    2 ['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', '_mercurial', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_clear', 'exc_info', 'exc_traceback', 'exc_type', 'exc_value', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'getwindowsversion', 'hexversion', 'last_traceback', 'last_type', 'last_value', 'long_info', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'py3kwarning', 'setcheckinterval', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions', 'winver']
    3 >>>a = 5
    4 >>> dir()
    5 ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'a', 'sys', 'version']
    6 >>> del a
    7 >>> dir()
    8 ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'sys', 'version']
    9 >>> 

    为了观察 dir 的作用,我们定义一个新的变量 a 并且给它赋一个值,然后检验 dir ,我们观察到在列表中增
    加了以上相同的值。我们使用 del 语句删除当前模块中的变量/属性,这个变化再一次反映在 dir 的输出
    中。
    关于 del 的一点注释——这个语句在运行后被用来 删除 一个变量/名称。在这个例子中, del a ,你将无
    法再使用变量 a ——它就好像从来没有存在过一样。

  • 相关阅读:
    ZZ 一些有意思的算法代码
    ff 怎样让新打开的标签就放在当前页面的右边
    111
    Windows平台下GO语言编译器(GOwindows)
    My Bookmarks
    使用googleperftools的tcmalloc
    memcached安装及测试
    erlang 入门(1)
    MS UI Automation
    twisted: echo server
  • 原文地址:https://www.cnblogs.com/stephenmc/p/5795495.html
Copyright © 2011-2022 走看看