`

一Python函数及对象

阅读更多

其他书籍都是如何一步步从基础到构建完整可运行的程序的,但我们跳过这个部分!

一个完整的、可执行的Python程序

 

#-------------------------------------------------------------------------------
# Name:        odbchelper
# Purpose:
#         odbc帮助类
# Author:      zdk
#
# Created:     02/11/2012
# Copyright:   (c) zdk 2012
# Licence:     <your licence>
#-------------------------------------------------------------------------------

def buildConnectionString(params):
    """build a connection string from dictionary of parameters.
    return string."""
    return ";".join(["%s=%s" %(k,v) for k,v in params.items()])

if __name__ == "__main__":
    myParams = {"server":"mpilgrim",\
            "database":"master",\
            "uid":"sa",\
            "pwd":"secret"\
            }
    print (buildConnectionString(myParams))

 odbchelper.py输出的结果为:pwd=secret;database=master;uid=sa;server=mpilgrim

 

1. 函数声明

    和大多数语言一样python有函数,在需要时,像下面这样声明即可:

 

def buildConnectionString(params):

 

    首先,函数声明以关键字 def 开始,接着为函数名,再往后是放在小括号里的参数。如果是多个参数可以用逗号隔开。

    其次函数没有定义返回类型,Python不需要指定返回类型,实际上每一个函数都有返回值,默认为None(python的空值)

2. 文档化函数

    可以通过给出一个doc string(文档字符串)来文档化一个python函数。

 

def buildConnectionString(params):
    """build a connection string from dictionary of parameters.
    return string."""

 

   三重引号表示一个多行字符串,你可以在任何地方使用它们,但你会发现,它们经常被用于定义doc string。

   在三重引号中的任何东西都是这个函数的doc string,它们用来说明函数可以做什么,如果存在doc string,它必须是一个函数定义的第一个内容(也就是说,在冒号后面的第一个内容)。在技术上不要求给出函数的doc string,但是你应该这样做,不光是为了解释,python还会有一些额外的动机:doc string在运行时可以作为函数的属性。

3.万物皆对象

   上面说doc string可以作为函数的属性,并且运行时可用,在python中函数同其他东西一样也是对象。

 

#-------------------------------------------------------------------------------
# Name:        testOdbchelper
# Purpose:
#
# Author:      zdk
#
# Created:     02/11/2012
# Copyright:   (c) zdk 2012
# Licence:     <your licence>
#-------------------------------------------------------------------------------
import odbchelper

if __name__ == '__main__':
    myParams = {"server":"mpilgrim1",\
            "database":"master1",\
            "uid":"sa1",\
            "pwd":"secret1"\
            }
    print (odbchelper.buildConnectionString(myParams))
    print (odbchelper.buildConnectionString.__doc__)

 

 结果为:

 

pwd=secret1;database=master1;uid=sa1;server=mpilgrim1

build a connection string from dictionary of parameters.

    return string.

  •     第11行将odbchelper程序作为模块导入,这样就可以使用它的公开的函数、类和属性。
  •     使用导入模块的函数、类和属性时必须加上模块名,即odbchelper.buildConnectionString。
  •     __doc__是属性,不是函数。

 

    3.1 模块导入的搜索路径

当导入一个模块时,Python在几个地方进行搜索,明确地,它会对定义在sys.path中的目录逐个进行搜索。

    sys.path是一个list(列表),你可以很容易的查看它或通过标准的list方法来修改它。

import sys

if __name__ == '__main__':
    print(sys.path)
    结果为:['E:\\daokun\\python\\python之旅', 'D:\\Program Files (x86)\\PyScripter\\Lib\\rpyc.zip', 'C:\\Windows\\system32\\python32.zip', 'D:\\Python32\\DLLs', 'D:\\Python32\\lib', 'D:\\Python32', 'D:\\Python32\\lib\\site-packages'] 

   默认的会把当前模块的路径加入到了sys.path中

 

    3.2 何为对象

     在python中万物皆对象从感性上可以解释为:一切都可以赋值给变量或作为参数传递给函数。

 

4.代码缩进

 

#-------------------------------------------------------------------------------
# Name:        fib
# Purpose:
#
# Author:      zdk
#
# Created:     02/11/2012
# Copyright:   (c) zdk 2012
# Licence:     <your licence>
#-------------------------------------------------------------------------------

def fib(n):
    print ('n =', n)
    if n > 1:
        return n * fib(n - 1)
    else:
        print ('end of the line')
        return 1

if __name__ == '__main__':
    print(fib(5))

 

    Note: Python vs. Java: 语句和块分割

    Python 使用硬回车来分割语句,冒号和缩进来分割代码块。  C++ 和 Java 使分号来分割语句,花括来分割代码块。

 

5.测试模块

if __name__ == '__main__':

    模块是对象,并且所有的模块都有一个内置属性__name__。一个模块的__name__的值取决于您如何使用模块。如果是import模块,那么__name__的通常为模块的文件名;如果像标准程序一样直接运行模块,那么__name__的值为__main__。只要了解到这一点,你就可以在模块内部设计一个测试套件,在其中加入这个if语句。当直接运行模块时,__name__的值是__main__,所以测试套件执行。当你导入模块时,__name__是别的东西,所以测试套件被忽略。

 

 

分享到:
评论

相关推荐

    Python函数-对象-模块.pdf

    整理总结了Python语言函数的定义,类与对象的定义与使用,Python数据类型转换函数,random函数,判断输入是否为数字判断相关函数,Python取整的方式,常见的Python的数学函数,时间日期相关函数,以及Python的一种...

    收集的C调用Python函数资料

    可以使用`PyObject_GetAttrString()`函数,传入模块对象和函数名字符串,返回的是一个`PyObject*`指针,表示Python函数对象。 4. **转换C参数为Python对象**: C函数的参数需要转换为Python对象才能传递给Python...

    rhino python函数中文网址.txt

    根据提供的文件信息,我们可以推断出这份文档主要与Rhino中的Python函数有关,并且提供了一个中文教程网址:http://bbs.rhino3d.asia/pythonhelp/index.htm。接下来,我们将详细探讨Rhino中Python函数的相关知识点。...

    C++之python函数调用

    在C++程序中调用Python函数是跨语言交互的一个常见需求,这通常通过Python的C API(Python C Application Programming Interface)来实现。Python C API提供了一系列的C接口,允许C/C++代码直接与Python解释器交互,...

    python函数文档_python函数_python文档_python_

    Python函数是Python编程语言的核心元素之一,用于组织代码并使其可重用。它们是执行特定任务的代码块,可以通过调用其名称来执行。在Python中,函数的定义使用关键字`def`,后跟函数名和圆括号,其中可能包含参数。...

    C++调用python函数

    综上所述,C++调用Python函数是一项技术性的任务,涉及到多种技术的综合运用,包括Python的C API、字符串编码、错误处理以及跨语言交互。在实际应用中,需要根据项目需求和资源限制来权衡利弊,选择最适合的实现方式...

    c++调用Python函数(并返回数据).zip

    3. **获取Python函数对象**:有了模块对象后,我们可以使用`PyObject_GetAttrString()`函数获取模块内的函数对象,传入模块对象和函数名。 4. **准备参数**:根据Python函数的参数类型,我们需要创建相应的Python...

    VC调用Python函数,源代码

    - 若要调用Python函数,可以创建`PyObject*`类型的指针,通过`PyImport_ImportModule()`导入模块,然后使用`PyObject_GetAttrString()`获取函数对象,最后使用`PyObject_CallObject()`执行函数并传入参数。...

    python 函数手册

    这些函数只是Python众多内置函数中的一部分,它们在日常编程中有着广泛的应用。理解并熟练使用这些函数,能够显著提高代码的效率和可读性。Python的内置函数库强大而全面,持续学习和掌握这些工具,是提升Python编程...

    Python函数式编程

    在Python中,函数式编程的风格往往与面向对象编程相结合使用。面向对象编程通常以对象为中心,对象内部包含状态信息,并通过方法改变这些状态。而函数式编程则倾向于无状态操作,数据作为参数在函数间流动,通过函数...

    Python函数速查表.zip

    总的来说,Python函数速查表是一个集Python基础、numpy和SciPy科学计算库于一体的实用工具。通过深入理解和熟练运用这些函数,开发者能够更加高效地编写和调试代码,解决各种复杂问题。对于学习和提升Python编程技能...

    python变量及对象介绍.rar_python_python数学函数_whetherot5_wolfhm5

    在这个"python变量及对象介绍.rar"压缩包中,我们找到了两份与Python编程相关的PPTX文件,分别是"python基础知识-变量及对象.pptx"和"python基础知识-python介绍.pptx"。这些资料将帮助我们深入理解Python中的变量和...

    python函数中文手册

    ### Python函数中文手册知识点解析 #### 一、概述 Python函数中文手册主要涵盖了Python中常用的内置函数介绍。本文档基于Python 2.7.2版本编写,并提供了对这些内置函数的详细解释及其用法示例。手册鼓励用户进行...

    第七章Python对象和类习题及答案--中文

    Python 对象和类习题及答案中文 在本节中,我们将学习 Python 中的对象和类,并通过习题和答案来巩固相关知识点。 定义对象的类 在 Python 中,类是定义对象的模板或蓝图。类是定义相同类型对象的模板,蓝图或...

    Python实验一 面向对象程序设计实验.doc

    面向对象程序设计是 Python 中的一种重要编程范式,它基于类和对象的概念,强调数据封装、继承和多态性。本实验旨在让学生深入理解和实践面向对象编程的基本原理和技巧。 首先,实验要求学生掌握类的定义。在 ...

    Python面向对象之类和对象实例详解

    方法是一个个函数; #类的属性 就是 类变量 #实例变量:定义在方法中的变量,只作用于当前实例的类。 例子: class Turtle:#python 中类名约定以大写字母开头 '''关于类的简单例子。。。''' #属性 == 类变量 ...

    Python基础语法 Python数据类型与结构 Python函数与模块 面向对象编程在Python中的应用 Python异常处

    Python函数与模块 面向对象编程在Python中的应用 Python异常处理与调试 Python文件操作与系统编程 Python网络编程基础 Python高级特性:装饰器与迭代器 Python数据库操作:SQLAlchemy Python与Web开发:Flask框架 ...

    python面向对象课件

    面向对象编程(Object-Oriented Programming,简称OOP)是Python编程中的核心概念之一,它是一种编程范式,强调通过创建对象来组织代码,使得程序更易于理解和维护。本课件详细介绍了Python中的面向对象特性,包括类...

    C++调用python3.5中的函数

    3. 获取Python函数对象:使用`PyObject_GetAttrString()`函数获取模块中的函数对象。 4. 准备参数:将C++的数据转换为Python对象,以便作为参数传递给Python函数。这可能涉及到类型转换,如将整数转换为`...

    在Python中居然可以定义两个同名通参数的函数

    这是因为第二次定义时,`test` 这个名字被重新绑定到了一个新的函数对象上。 #### IDE的提示与实际运行结果之间的差异 如文章所述,在某些集成开发环境(IDE)中,如Eclipse,可能会出现关于函数重定义的警告或...

Global site tag (gtag.js) - Google Analytics