【Python五篇慢慢弹(3)】函数修行知python
函数修行知python
作者:白宁超
2016年10月9日21:51:52
摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下。官方给出的pythondoc入门资料包含了基本要点。本文是对文档常用核心要点进行梳理,简单冗余知识不再介绍,作者假使你用c/java/c#/c++任一种语言基础。本系列文章属于入门内容,老鸟可以略看也可以略过,新鸟可以从篇一<快速上手学python>先接触下python怎样安装与运行,以及pycharm编辑器的使用和配置;篇二<数据结构看python>介绍python语言中控制语句、列表、字典、元组、循环等基本操作;篇三<函数修行知python>细解python语言函数的范畴与内容;篇四<模块异常谈python>采用登录的案例详解模块来龙去脉;篇五<‘类’过依然继续前行,直至ending再出发>介绍类的基本操作,扩展虚拟环境、标准类库和下个系列预告。(本文原创,转载注明出处:函数修行知python)
目录:
【Python五篇慢慢弹(1)】快速上手学python
【Python五篇慢慢弹(2)】数据结构看python
【Python五篇慢慢弹(3)】函数修行知python
【Python五篇慢慢弹(4)】模块异常谈python
【Python五篇慢慢弹(5)】‘类’过依然继续前行,直至ending再出发
1 函数关键字参数的调用
【小记】本文中所有代码经过测试均可正常运行,python有个问题就是复制后会破坏原有格式。所以读者复制运行时报如下错误:SyntaxError: expected an indented block,是因为空格问题,可以预留4个空格,或者采用tab键空格
实例演示:
def parrot(voltage,state='a stiff',action='voom', type='Norwegian Blue'):
print("-- This parrot wouldn't", action, end=' ')
print("if you put", voltage, "volts through it.")
print("-- Lovely plumage, the", type)
print("-- It's",state,"!") parrot(1000) # 1 positional argument
parrot(voltage=1000) # 1 keyword argument
parrot(voltage=1000000, action='VOOOOOM') # 2 keyword arguments
parrot(action='VOOOOOM', voltage=1000000) # 2 keyword arguments
parrot('a million', 'bereft of life', 'jump') # 3 positional arguments
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、函数定义作用域实例
实例演示:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'cuitbnc'
__mtime__ = '2016/10/9'
# 欢迎进入我的主页:http://www.cnblogs.com/baiboy/.
""" i = 5
def funrange(arg=i):
print(arg)
i = 6
funrange(i)
运行结果:
解析:
程序执行自上往下,i=5为全局变量赋值5,然后函数体;再次i=6,说明i索引指向值6,调用函数时候,i传入的值为6.
3、函数关键字的使用
实例演示:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'cuitbnc'
__mtime__ = '2016/10/9'
# 欢迎进入我的主页:http://www.cnblogs.com/baiboy/.
"""
def _QA_(blogName, *arguments, **keywords):
print("-- 伏草惟存,你的博客地址是", blogName, "?")
print("-- 奥,我知道这个博客:", blogName)
for arg in arguments:
print(arg)
print("-" * 20+"伏草惟存写过文章"+"-" * 20)
keys = sorted(keywords.keys())
for kw in keys:
print(kw, ":", keywords[kw])
_QA_("http://www.cnblogs.com/baiboy/",
"你是写过 NLP.",
"你是写过 CRF.",
"你是写过 Python.",
"你是写过 GitHub.",
NLP="十分钟快览自然语言处理学习总结",
Python="第一次python之旅:快速上手学Python",
CRF="前戏:一起走进条件随机场(一)",
GitHub="GitHub使用操作指南")
运行结果:
解析:
函数QA(blogName, *arguments, **keywords)解析如下:
blogName:必选形参,前文已经介绍过。
*arguments:元组形参,原则上可以任意个,为一个元组进行传参,如(2,3,'strubf')
**keywords:关键字参数,又叫字典参数,仍然可以有多个参数,如('小明':18,'小花':19,'小王':23)
4、函数可变参数的使用
实例演示:
def _concat_(*args, sep="/"):
return sep.join(args) str=_concat_("earth", "mars", "venus")
print(str)
str1=_concat_("earth", "mars", "venus", sep=".")
print(str1)
str2=_concat_("Java", "Python", "C#","C","R","Matlab","C++","JavaScript",sep="\t")
print(str2)
运行结果:
解析:
_concat_(*args, sep="/"):中*args元组参数,前文讲过。
sep="/":指定格式进行参数预处理
5、参数列表的分拆,* 操作符来自动把参数列表拆开
实例演示:
def _argList_(name, URL='man', age='18'):
print("-- 我在博客园社区申请一个账号,名字是:",name, end=' ')
print(".个人主页:", URL, "欢迎访问.", end=' ')
print("我在这里不断成长,今年", age, "!") data = {"name": "伏草惟存", "URL": "http://www.cnblogs.com/baiboy/", "age": "4岁7个月"}
_argList_(**data)
运行结果:
解析:
**data表示字典参数,前文介绍过,如果字典参数比较长我们可以将其封装到一个字典data里面,然后用**data传参。
end=' ': 表示连接成一句输出。
6、 Lambda 形式,Lambda 形式可以用于任何需要的函数对象
实例演示:
def _makeincrementor_(n):
return lambda x: x + n
f = _makeincrementor_(42)
print(f(1))
运行结果:
解析:
函数的调用很清晰不用说了,主要
lambda x: x + n
C#同学都比较熟悉这个形式了,x=x+n。f = _makeincrementor_(42)得出f=42,f(1)=x+1,此时x=42,故得出结果43
7、参考文献和推荐资料
- Python 官方网站 :包含代码、文档和 Web 上与 Python 有关的页面链接该网站镜像于全世界的几处其它问题,类似欧洲、日本和澳大利亚。镜像可能会比主站快,这取决于你的地理位置
- 快速访问 Python 的文档
- Python 包索引 :索引了可供下载的,用户创建的 Python 模块。如果你发布了代码,可以注册到这里,这样别人可以找到它
- The Scientific Python : 项目包括数组快速计算和处理模块,和大量线性代数、傅里叶变换、非线性solvers、随机数分布,统计分析以及类似的包
- 官方python学习文档
- 简明Python教程
- 廖雪峰:python教程
- Python官网文档
- 【51cto学院,入门课程】Python零基础入门学习视频教程
- 【个人博客:案例】GitHub数据提取与分析
- 【csdn】python知识库
- 【社区】python中文学习大本营
- 【个人博客】老王python
- 【51cto学院】如何用python开发跨平台的记事本视频课程
- 【51cto学院,网站开发】台湾辅仁大学:Python Django基础视频课程
- 【51cto学院,网站开发】用Python Django快速做出高大上的BBS论坛网站
【Python五篇慢慢弹(3)】函数修行知python的更多相关文章
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 【Python五篇慢慢弹】数据结构看python
数据结构看python 作者:白宁超 2016年10月9日14:04:47 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...
- 【Python五篇慢慢弹(4)】模块异常谈python
模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondo ...
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第五篇【AppiumLibrary校验函数介绍】
http://blog.csdn.net/deadgrape/article/details/50619050 以上连作者先跪一下方便面,在上一篇中,作者遗漏了两个常用的函数: 1.长按 Long P ...
- python 一篇就能理解函数基础
一,函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过 ...
- python 基础篇 15 内置函数和匿名函数
------------------------>>>>>>>>>>>>>>>内置函数<<< ...
- Python开发【第五篇】内置函数
abs() 函数返回数字的绝对值 __author__ = "Tang" a = -30 all() 函数用于判断给定的可迭代参数iterable中的所有元素是否都为True,如果 ...
- Python学习笔记【第五篇】:基础函数
一.函数:函数定义关键字def 后跟函数名称 def 函数名(参数): ... 函数体 ... 返回值 案例: # 定义函数 def say_hei( ...
随机推荐
- mobx @computed的解读
写在前面:我一开始看不懂官网的@computed的作用,因为即使我把@computed去掉,依然能正确的report,然后我百度谷歌都找不到答案,下面都是我自己的理解,如果是有问题的,不对的,请务必留 ...
- C# 注册 Windows 热键
闲扯: 前几日,一个朋友问我如何实现按 F1 键实现粘贴(Ctrl+V)功能,百度了一个方法,发给他,他看不懂(已经是 Boss 的曾经的码农),我就做了个Demo给他参考.今日得空,将 Demo 整 ...
- Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07)
作者:Antonio Leiva 时间:Jan 5, 2017 原文链接:https://antonioleiva.com/lambdas-kotlin/ 由于Lambda表达式允许更简单的方式建模式 ...
- UITextView 输入字数限制
本文介绍了UITextView对中英文还有iOS自带表情输入的字数限制,由于中文输入会有联想导致字数限制不准确所以苦恼好久,所以参考一些大神的博客终于搞定,欢迎大家参考和指正. 对于限制UITextV ...
- C# 条形码操作【源码下载】
本篇介绍通过C#生成和读取一维码.二维码的操作. 目录 1. 介绍:介绍条形码.条形码的分类以及ZXing.Net类库. 2. 一维码操作:包含对一维码的生成.读取操作. 3. 二维码操作:包含对二维 ...
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- [.NET] 利用 async & await 进行异步 IO 操作
利用 async & await 进行异步 IO 操作 [博主]反骨仔 [出处]http://www.cnblogs.com/liqingwen/p/6082673.html 序 上次,博主 ...
- sql的那些事(一)
一.概述 书写sql是我们程序猿在开发中必不可少的技能,优秀的sql语句,执行起来吊炸天,性能杠杠的.差劲的sql,不仅使查询效率降低,维护起来也十分不便.一切都是为了性能,一切都是为了业务,你觉得你 ...
- vscode 1.5安装体验
1.下载安装 官方下载地址: http://code.visualstudio.com/ 界面截图: 2.图标显示功能File Icon Themes vscode1.5版本文件夹视图,可显示文件类型 ...
- HttpPost过程中使用的URLEncoder.encode(something, encode)
URLEncoder.encode("刘美美", "utf-8").toString() = %E5%88%98%E7%BE%8E%E7%B ...