设为首页 收藏本站
查看: 818|回复: 0

[经验分享] 一Python函数及对象

[复制链接]

尚未签到

发表于 2017-4-25 09:08:57 | 显示全部楼层 |阅读模式
  其他书籍都是如何一步步从基础到构建完整可运行的程序的,但我们跳过这个部分!
  一个完整的、可执行的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__是别的东西,所以测试套件被忽略。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-368884-1-1.html 上篇帖子: python-文件操作(2) 下篇帖子: python 一小时 教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表