博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python五篇慢慢弹(3)】函数修行知python
阅读量:4343 次
发布时间:2019-06-07

本文共 4112 字,大约阅读时间需要 13 分钟。

作者:

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五篇慢慢弹(2)】
【Python五篇慢慢弹(3)】
【Python五篇慢慢弹(4)】
【Python五篇慢慢弹(5)】

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 argumentparrot(voltage=1000) # 1 keyword argumentparrot(voltage=1000000, action='VOOOOOM') # 2 keyword argumentsparrot(action='VOOOOOM', voltage=1000000) # 2 keyword argumentsparrot('a million', 'bereft of life', 'jump') # 3 positional argumentsparrot('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 = 5def funrange(arg=i):    print(arg)i = 6funrange(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 + nf = _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、参考文献和推荐资料


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

 

转载于:https://www.cnblogs.com/baiboy/p/python3.html

你可能感兴趣的文章
[BZOJ4303]数列
查看>>
一般处理程序在VS2012中打开问题
查看>>
C语言中的++和--
查看>>
thinkphp3.2.3入口文件详解
查看>>
POJ 1141 Brackets Sequence
查看>>
Ubuntu 18.04 root 使用ssh密钥远程登陆
查看>>
Servlet和JSP的异同。
查看>>
虚拟机centOs Linux与Windows之间的文件传输
查看>>
ethereum(以太坊)(二)--合约中属性和行为的访问权限
查看>>
IOS内存管理
查看>>
middle
查看>>
[Bzoj1009][HNOI2008]GT考试(动态规划)
查看>>
Blob(二进制)、byte[]、long、date之间的类型转换
查看>>
OO第一次总结博客
查看>>
day7
查看>>
iphone移动端踩坑
查看>>
vs无法加载项目
查看>>
Beanutils基本用法
查看>>
玉伯的一道课后题题解(关于 IEEE 754 双精度浮点型精度损失)
查看>>
《BI那点儿事》数据流转换——百分比抽样、行抽样
查看>>