zoukankan      html  css  js  c++  java
  • Python基础学习笔记(十一)函数、模块与包

      参考资料:

      1. 《Python基础教程》

      2. http://www.runoob.com/python/python-functions.html

      3. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000

      4. http://www.runoob.com/python/python-modules.html

      5. http://www.pythoner.com/

      6. http://blog.csdn.net/leexide/article/details/39908279

      7. 包机制

      ▶ 函数

      Python的参数都是引用传递。

      函数语法如下:  

    def functionname( parameters ):
       "函数_文档字符串"
       function_suite
       return [expression]

      实例:

    def printme( str ):
       "打印传入的字符串到标准显示设备上"
       print str
       return

      Python支持缺省参数和不定长参数,缺省参数的定义与使用同其它编程语言。不定长参数的使用实例如下: 

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    # 可写函数说明
    def printinfo( arg1, *vartuple ):
       "打印任何传入的参数"
       print "输出: "
       print arg1
       for var in vartuple:
          print var
       return;
     
    # 调用printinfo 函数
    printinfo( 10 );
    printinfo( 70, 60, 50 );

      Python使用Lambda表达式来创建匿名参数:

      Lambda语法:

    lambda [arg1 [,arg2,.....argn]]:expression

      实例:

    sum = lambda x, y = 5: x + y
    sum(3)

      ▶ 模块

      模块是一个保存了Python代码的(如:.py)文件,也是Python对象,具有随机的名字属性用来绑定或引用。其中,可定义函数、类和变量,以及可执行代码。

      import语句语法:

    import module1[, module2[,... moduleN]

      from...import语句语法:

    from modname import name1[, name2[, ... nameN]]
    from modname import *

      全局变量的使用:

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    Money = 2000
    def AddMoney():
       global Money
       Money = Money + 1
     
    print Money
    AddMoney()
    print Money

      dir(module_name)函数,返回一个module中定义的所有模块,变量和函数组成的一个列表。

      globals()和locals()函数,分别返回全局或局部命令空间的名字。

      reload(module_name)函数,重新导入一个模块。

      

      ▶ 包

      为了避免将文件夹名当作普通的字符串,包是一个至少要包含__init__.py文件的文件夹。

      __init__.py的内容可为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在from package-name import *这语句使用的,全部导出定义过的模块。 

    __all__ = ['module_1', 'module_2']

     

       图1 包、模块、函数和类的关系

              图2 实例组织结构

     

    parent文件夹中的__init__.py

    #!/usr/bin/env python
    # -*- coding=utf-8 -*-
    
    if __name__ == '__main__':
        print 'Run as main in parent...'
    else:
        print __name__
        print 'pack 1 or pack 2 init...'

    pack_1文件夹中的__init__.py:

    #!/usr/bin/env python
    # -*- coding=utf-8 -*-
    
    __all__ = ["module_1"]
    
    if __name__ == '__main__':
        print 'Run as main in pack 1...'
    else:
        print __name__
        print 'pack 1 init...'

    pack_2文件夹中的__init__.py:

    #!/usr/bin/env python
    # -*- coding=utf-8 -*-
    
    __all__ = ["module_2"]
    
    if __name__ == '__main__':
        print 'Run as main in pack 2...'
    else:
        print __name__
        print 'pack 2 init...'

    使用实例:

    #!/usr/bin/env python
    # -*- coding=utf-8 -*-
    
    from parent.pack_1 import *
    from parent.pack_2 import *
    
    module_1.func1()
    module_2.func2()

      结果:

    parent
    pack 1 or pack 2 init...
    parent.pack_1
    pack 1 init...
    parent.pack_2
    pack 2 init...
    pack_1.module_1.func1()
    pack_2.module_2.func2()

      

      如果直接运行__init__.py,则__name__是main。

  • 相关阅读:
    如何从程序集中加载及卸载插件(下)
    Castle AOP 系列(四):实现一个简单的基于上下文调用的权限校验机制
    Castle AOP 系列(一):对类方法调用的拦截
    Mussel使用系列(六):分布式调用的牛刀小试
    新发现XmlNode中变态的地方
    我们发现你在XX邮箱的账号密码与其他网站被盗账号密码一致 请立即更改密码。
    html5 css3 新特性一览表
    [android] Http Post 请求
    [vs 使用技巧] VS2013显示行数 行号
    ORACLE数据库存储使用情况查询命令
  • 原文地址:https://www.cnblogs.com/AmitX-moten/p/4865717.html
Copyright © 2011-2022 走看看