函数修行知python

作者:白宁超

2016年10月9日21:51:52

摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下。官方给出的pythondoc入门资料包含了基本要点。本文是对文档常用核心要点进行梳理,简单冗余知识不再介绍,作者假使你用c/java/c#/c++任一种语言基础。本系列文章属于入门内容,老鸟可以略看也可以略过,新鸟可以从篇一<快速上手学python>先接触下python怎样安装与运行,以及pycharm编辑器的使用和配置;篇二<数据结构看python>介绍python语言中控制语句、列表、字典、元组、循环等基本操作;篇三<函数修行知python>细解python语言函数的范畴与内容;篇四<模块异常谈python>采用登录的案例详解模块来龙去脉;篇五<‘类’过依然继续前行,直至ending再出发>介绍类的基本操作,扩展虚拟环境、标准类库和下个系列预告。(本文原创,转载注明出处:函数修行知python)

目录:


  1. Python五篇慢慢弹(1)】快速上手学python
  1. Python五篇慢慢弹(2)】数据结构看python
  1. Python五篇慢慢弹(3)】函数修行知python
  1. Python五篇慢慢弹(4)】模块异常谈python
  1. Python五篇慢慢弹(5)】‘类’过依然继续前行,直至ending再出发

1 函数关键字参数的调用


【小记】本文中所有代码经过测试均可正常运行,python有个问题就是复制后会破坏原有格式。所以读者复制运行时报如下错误:SyntaxError: expected an indented block,是因为空格问题,可以预留4个空格,或者采用tab键空格

实例演示:

  1. def parrot(voltage,state='a stiff',action='voom', type='Norwegian Blue'):
  2. print("-- This parrot wouldn't", action, end=' ')
  3. print("if you put", voltage, "volts through it.")
  4. print("-- Lovely plumage, the", type)
  5. print("-- It's",state,"!")
  6.  
  7. parrot(1000) # 1 positional argument
  8. parrot(voltage=1000) # 1 keyword argument
  9. parrot(voltage=1000000, action='VOOOOOM') # 2 keyword arguments
  10. parrot(action='VOOOOOM', voltage=1000000) # 2 keyword arguments
  11. parrot('a million', 'bereft of life', 'jump') # 3 positional arguments
  12. parrot('a thousand', state='pushing up the daisies') # 1 positional, 1 keyword)

运行结果:

解析:

def _parrot_(voltage,state='a stiff',action='voom', type='Norwegian Blue')

函数定义:def 定义函数。如def functionname([参数])

函数参数:1、可以有形参也可以不含形参。2、形参分为必选形参(如voltage)和可选形参(如state='a stiff')且必选形参在可选形参前。

必选形参与可选参数区别:当可选参数没有实参时,形参默认为设定值,如此例子默认a stiff;形参中必选参数和可选参数都可以设置多个,记住必选参数必须放在可选参数前。

函数体:不同于c/java/c#等使用{}包含函数体,python使用:后面根据格式块包含函数体,每个块前4个空格。

2、函数定义作用域实例


实例演示:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. __title__ = ''
  5. __author__ = 'cuitbnc'
  6. __mtime__ = '2016/10/9'
  7. # 欢迎进入我的主页:http://www.cnblogs.com/baiboy/.
  8. """
  9.  
  10. i = 5
  11. def funrange(arg=i):
  12. print(arg)
  13. i = 6
  14. funrange(i)

运行结果:

解析:

程序执行自上往下,i=5为全局变量赋值5,然后函数体;再次i=6,说明i索引指向值6,调用函数时候,i传入的值为6.

3、函数关键字的使用


实例演示:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. __title__ = ''
  5. __author__ = 'cuitbnc'
  6. __mtime__ = '2016/10/9'
  7. # 欢迎进入我的主页:http://www.cnblogs.com/baiboy/.
  8. """
  9. def _QA_(blogName, *arguments, **keywords):
  10. print("-- 伏草惟存,你的博客地址是", blogName, "?")
  11. print("-- 奥,我知道这个博客:", blogName)
  12. for arg in arguments:
  13. print(arg)
  14. print("-" * 20+"伏草惟存写过文章"+"-" * 20)
  15. keys = sorted(keywords.keys())
  16. for kw in keys:
  17. print(kw, ":", keywords[kw])
  18. _QA_("http://www.cnblogs.com/baiboy/",
  19. "你是写过 NLP.",
  20. "你是写过 CRF.",
  21. "你是写过 Python.",
  22. "你是写过 GitHub.",
  23. NLP="十分钟快览自然语言处理学习总结",
  24. Python="第一次python之旅:快速上手学Python",
  25. CRF="前戏:一起走进条件随机场(一)",
  26. GitHub="GitHub使用操作指南")

  

运行结果:

解析:

  1. 函数QA(blogName, *arguments, **keywords)解析如下:
    blogName:必选形参,前文已经介绍过。
    *arguments:元组形参,原则上可以任意个,为一个元组进行传参,如(2,3'strubf'
    **keywords:关键字参数,又叫字典参数,仍然可以有多个参数,如('小明':18,'小花':19,'小王':23

4、函数可变参数的使用


实例演示:

  1. def _concat_(*args, sep="/"):
  2. return sep.join(args)
  3.  
  4. str=_concat_("earth", "mars", "venus")
  5. print(str)
  6. str1=_concat_("earth", "mars", "venus", sep=".")
  7. print(str1)
  8. str2=_concat_("Java", "Python", "C#","C","R","Matlab","C++","JavaScript",sep="\t")
  9. print(str2)

运行结果:

解析:

  1. _concat_(*args, sep="/"):中*args元组参数,前文讲过。
  1. sep="/":指定格式进行参数预处理

5、参数列表的分拆,* 操作符来自动把参数列表拆开


实例演示:

  1. def _argList_(name, URL='man', age='18'):
  2. print("-- 我在博客园社区申请一个账号,名字是:",name, end=' ')
  3. print(".个人主页:", URL, "欢迎访问.", end=' ')
  4. print("我在这里不断成长,今年", age, "!")
  5.  
  6. data = {"name": "伏草惟存", "URL": "http://www.cnblogs.com/baiboy/", "age": "4岁7个月"}
  7. _argList_(**data)

运行结果:

解析:

**data表示字典参数,前文介绍过,如果字典参数比较长我们可以将其封装到一个字典data里面,然后用**data传参。

end=' ': 表示连接成一句输出。

6、 Lambda 形式,Lambda 形式可以用于任何需要的函数对象


 实例演示:

  1. def _makeincrementor_(n):
  2. return lambda x: x + n
  3. f = _makeincrementor_(42)
  4. print(f(1))

运行结果:

解析:

函数的调用很清晰不用说了,主要

lambda x: x + n

C#同学都比较熟悉这个形式了,x=x+n。f = _makeincrementor_(42)得出f=42,f(1)=x+1,此时x=42,故得出结果43

7、参考文献和推荐资料


  1. Python 官方网站 :包含代码、文档和 Web 上与 Python 有关的页面链接该网站镜像于全世界的几处其它问题,类似欧洲、日本和澳大利亚。镜像可能会比主站快,这取决于你的地理位置
  2. 快速访问 Python 的文档
  3. Python 包索引 :索引了可供下载的,用户创建的 Python 模块。如果你发布了代码,可以注册到这里,这样别人可以找到它
  4. The Scientific Python : 项目包括数组快速计算和处理模块,和大量线性代数、傅里叶变换、非线性solvers、随机数分布,统计分析以及类似的包
  5. 官方python学习文档
  6. 简明Python教程
  7. 廖雪峰:python教程
  8. Python官网文档
  9. 【51cto学院,入门课程】Python零基础入门学习视频教程
  10. 【个人博客:案例】GitHub数据提取与分析
  11. 【csdn】python知识库
  12. 【社区】python中文学习大本营
  13. 【个人博客】老王python
  1.  

【Python五篇慢慢弹(3)】函数修行知python的更多相关文章

  1. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  2. 【Python五篇慢慢弹】数据结构看python

    数据结构看python 作者:白宁超 2016年10月9日14:04:47 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...

  3. 【Python五篇慢慢弹(4)】模块异常谈python

    模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondo ...

  4. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  5. RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第五篇【AppiumLibrary校验函数介绍】

    http://blog.csdn.net/deadgrape/article/details/50619050 以上连作者先跪一下方便面,在上一篇中,作者遗漏了两个常用的函数: 1.长按 Long P ...

  6. python 一篇就能理解函数基础

    一,函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过 ...

  7. python 基础篇 15 内置函数和匿名函数

    ------------------------>>>>>>>>>>>>>>>内置函数<<< ...

  8. Python开发【第五篇】内置函数

    abs() 函数返回数字的绝对值 __author__ = "Tang" a = -30 all() 函数用于判断给定的可迭代参数iterable中的所有元素是否都为True,如果 ...

  9. Python学习笔记【第五篇】:基础函数

    一.函数:函数定义关键字def  后跟函数名称 def 函数名(参数):             ...     函数体     ...     返回值 案例: # 定义函数 def say_hei( ...

随机推荐

  1. 旺财速啃H5框架之Bootstrap(四)

    上一篇<<旺财速啃H5框架之Bootstrap(三)>>已经把导航做了,接下来搭建内容框架.... 对于不规整的网页,要做成自适应就有点玩大了.... 例如下面这种版式的页面. ...

  2. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  3. Vue-Router 页面正在加载特效

    Vue-Router 页面正在加载特效 如果你在使用 Vue.js 和 Vue-Router 开发单页面应用.因为每个页面都是一个 Vue 组件,你需要从服务器端请求数据,然后再让 Vue 引擎来渲染 ...

  4. Tesseract-OCR字符识别简介

    OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程.Tesseract:开源的OCR识别引擎,初期Tesseract引擎 ...

  5. Velocity初探小结--velocity使用语法详解

    做java开发的朋友一般对JSP是比较熟悉的,大部分人第一次学习开发View层都是使用JSP来进行页面渲染的,我们都知道JSP是可以嵌入java代码的,在远古时代,java程序员甚至在一个jsp页面上 ...

  6. 创建APPID&&部署服务端教程

    创建APPID&&部署服务端 一.创建APPID 1.打开https://console.developers.google.com ,左击顶部Project,然后左击创建项目 2.输 ...

  7. 前端自动化构建工具gulp记录

    一.安装 1)安装nodejs 通过nodejs的npm安装gulp,插件也可以通过npm安装.windows系统是个.msi工具,只要一直下一步即可,软件会自动在写入环境变量中,这样就能在cmd命令 ...

  8. ASP.NET MVC关于Ajax以及Jquery的无限级联动

    ---恢复内容开始--- 第一次发表博文,发表博文的目的是巩固自己的技术,也能够共享给大家.写的不好的地方,希望大家多给给意见.老司机勿喷 数据结构() NewsTypeId 新闻ID, NewsTy ...

  9. MSYS2——Windows平台下模拟linux环境的搭建

    最近从MSYS1.0迁移到了MSYS2.0,简单讲,MSYS2.0功能更强大,其环境模拟更加符合linux.虽然本身来自cygwin,但其集成了pacman软件管理工具,很有linux范,并且可以直接 ...

  10. Android的Kotlin秘方(II):RecyclerView 和 DiffUtil

    作者:Antonio Leiva 时间:Sep 12, 2016 原文链接:http://antonioleiva.com/recyclerview-diffutil-kotlin/ 如你所知,在[支 ...