zoukankan      html  css  js  c++  java
  • Course2-Python函数和模块

    一. 函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

    函数能提高应用的模块性,和代码的重复利用率。 上一课里提到了Python的很多内置函数。在此主要讲自定义函数。

    1. 定义函数的规则:

    以def关键词开头,后接函数标识符名称和圆括号()。 注意用规范的函数名

    任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

    函数的第一行语句可以文档字符串—用于存放函数注释说明。

    函数内容以冒号起始,并且缩进。

    return结束函数,选择性地返回一个值。不带表达式的return相当于返回 None。无返回可以省略return.

    默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来的。

    例1:

    import time
    import sys
    def logging(message, filename='E:\log.log'):
            try:
                print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + " " + message
                fso = open(filename, 'a')
                fso.write(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + " " + message+ '
    ' + '
    ')
                fso.close()
            except:
                err = ''.join(traceback.format_exception(*sys.exc_info()))
               print err
    

    2. 参数:

    1). 必备参数

    logging("test", filename='E:\logtest.log'). 例1中的message为必备参数

    2). 命名参数

    logging(message = "my message", filename='E:\logtest.log').

    3). 缺省参数

    例1中的filename参数如果不传入参数,会被认为是默认值。

    logging("my message")

    4). 不定长参数

    加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可。

    如例1中的traceback.format_exception(*sys.exc_info())

    3. 匿名函数

    python 使用 lambda 来创建匿名函数。

    1). lambda只是一个表达式,函数体比def简单很多。

    2). lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

    3). lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数。

    4). 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

    5). lambda函数的语法只包含一个语句,如下:

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

    例2:

    summ = lambda arg1,arg2: arg1 + arg2
    summ(1,2)
    

    4. 变量的作用域:

    1). 全局变量

    2). 局部变量

    定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

    局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。

    例3:

    total = 0; # 全局变量
    def summ( arg1, arg2 ):
       total = arg1 + arg2; # total在这是局部变量.
       print "函数内局部变量 : ", total
       return total;
     
    summ( 10, 20 );
    print "函数全局变量 : ", total 
    

    二. 模块

    模块能够有逻辑地组织Python代码段。把相关的代码分配到一个模块能让代码更易用,更易懂。

    模块也是Python对象,具有随机的名字属性用来绑定或引用。

    模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。

    1. 导入模块

    1). import, 想使用Python源文件,只需在另一个源文件里执行import语句。import module1[, module2[,... moduleN]

    如: import function1

    当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。

    搜索路径是一个解释器会先进行搜索的所有目录的列表。需要把import命令放在脚本的顶端.

    2). from ... import

    from语句让你从模块中导入一个指定的部分到当前命名空间中: from modname import name1[, name2[, ... nameN]]

    如: from pywinauto.application import Application

    3). from ... import *

    把一个模块的所有内容全都导入到当前的命名空间也是可行的. from modname import *

    如: from DataSources.PublicVariables import *

    2. 定位模块

    当你导入一个模块,Python解析器对模块位置的搜索顺序是:

    1). 当前目录

    2). 如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。

    3). 如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。

    模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

    4). PYTHONPATH变量

    作为环境变量,PYTHONPATH由装在一个列表里的许多目录组成。PYTHONPATH的语法和shell变量PATH的一样。

    在Windows系统,典型的PYTHONPATH如下:

    set PYTHONPATH=c:python20lib;

    在UNIX系统,典型的PYTHONPATH如下:

    set PYTHONPATH=/usr/local/lib/python

     (Note: sys.path是python的搜索模块的路径集,是一个list, 可以在python 环境下使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失)

    3. 命名空间和作用域

    一个Python表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。

    每个函数都有自己的命名空间。类的方法的作用域规则和通常函数的一样。

    Notes: 如果要给全局变量在一个函数里赋值,必须使用global语句。

    4. dir()

    dir()函数一个排好序的字符串列表,内容是一个模块里定义过的名字。dir(module_name)

    返回的列表容纳了在一个模块里定义的所有模块,变量和函数.

    5. reload()

    当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。

    因此,如果你想重新执行模块里顶层部分的代码,可以用reload()函数。该函数会重新导入之前导入过的模块。reload(module_name)

    6. Python中的包

    包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的Python的应用环境。

    Notes: 必须在包目录下创建文件 __init__.py

  • 相关阅读:
    Flip Game(枚举)Poj
    Ubuntu下启动Eclipse报错:A Java RunTime Environment (JRE) or Java Development Kit (JDK) must
    [cocos2dx笔记012]一定简易的UI配置类
    [MSSQL]採用pivot函数实现动态行转列
    (八十八)VFL语言初步
    Leetcode 218 The Skyline Problem
    mac 下作流程图工具omnigraffle
    JSP生成word文件
    状态压缩dp poj 3254 hdu5045
    hdu 1215 七夕节
  • 原文地址:https://www.cnblogs.com/daly/p/5221039.html
Copyright © 2011-2022 走看看