python学习:函数的学习
我们写东东的时候,往往有一些东西要频繁去复用,那么每个功能是10行代码,复用2次就是20行,这样看来我们的程序如果频繁利用某些代码的话,那么会是我们开发的东西越来越臃肿。那么好的方法有没有呢,那就是函数,函数可以把功能进行模块化,当大量复用的时候,可以有效的减少代码数量。
那么啥叫函数呢?打个土鳖的比方,比如我要从单位回老家的话,需要先坐地铁去火车站,然后乘坐XXx列火车回XX地,然后再打车回家。
好的,那么我们可以把这个过程抽象成一个函数命名为"回老家",当我把这个过程讲述一遍以后,在今后我再提起回老家,就可以想到。要坐地铁去火车站,然后乘坐XXx列火车回XX地,然后再打车回家这样的一个过程。这就是一个函数。
抽象成python代码的话可能是这样的:
def 回老家():
坐地铁去火车站
乘坐xxx列车
打车回家
好的,上面的def(define)是用来声明一个函数。函数主体就是一个过程。
接下来我们实际编写一个函数:
def SayHello():
print "hello world!"
上面的函数,只要我们引用他,那么他就会打印hello world这句话,
接下来我们就要讲些如何给函数赋值变量了。不然他总执行一个动作,功能上未免有些单一。
函数的参数赋值,基本上分为3类。
第一类,直接引用参数(变量)
def SayHello(a,b,c):
print "hello world %s %s %s" %(a,b,c) 1、使用方法:
SayHello("hello","world","!")#依次将"hello","world","!"赋值给a,b,c,缺陷是:如果用户给出的参数个数小于要求个数会报错。
2、使用方法:
SayHello(a="say",b="hello",c="world")#依次将"say","hello","world",赋值给a,b,c,好处是,可以一目了然的知晓赋值了哪些参数。
当然有些时候,我们限定了2个参数,如果用户少给了参数,那么程序会报错,但是用户手抖或者记错了,多写了参数一般情况都是不输出,那岂不是很不爽,是吧?
那好我们接下来看看怎么让用户多输入的参数也能够打印出来。
#-*- encoding:utf8 -*-
a="hello"
b="world"
def say2(a,b,*c):
print "系统默认的参数%s %s" %(a,b)
if c:
print "其他参数",
for i in c:
print i,
say2(a,b,"other","canshu")
这样输出出来:
系统默认的参数hello world
其他参数 other canshu
那好,我们来看看*c做了一个什么操作
#-*- encoding:utf8 -*-
a="hello"
b="world"
def say2(a,b,*c):
print "系统默认的参数%s %s" %(a,b)
if c:
print "c is ",c
print "其他参数",
for i in c:
print i,
say2(a,b,"other","canshu") 输出结果:
系统默认的参数hello world
c is ('other', 'canshu')
其他参数 other canshu
好的,我们可以看到*c 就是把原来未定义的所有参数,都融合到一起,然后组成了一个列表(关于列表的使用这里就不赘述了)。
在看另一种情况,如果某些同学佯装高端,这么去写
#-*- encoding:utf8 -*-
a="hello"
b="world"
def say2(a,b,*c):
print "系统默认的参数%s %s" %(a,b)
if c:
print "c is ",c
print "其他参数",
for i in c:
print i,
say2(a="other",b="world",name="dab") 结果出错: Traceback (most recent call last):
File "F:\python\python\crossin\test_def.py", line 11, in <module>
say2(a="other",b="world",name="dab")
TypeError: say2() got an unexpected keyword argument 'name'
告诉你类型错误,获取了一个意外的关键词选项。
这个错误是因为name="dab"无法转换为列表。那这种情况可以使用如下代码进行处理。
#-*- encoding:utf8 -*-
a="hello"
b="world"
def say2(a,b,**c):
print "系统默认的参数%s %s" %(a,b)
if c:
print "c is ",c
print "其他参数",
for i in c:
print i,
say2(a="other",b="world",name="dab") 结果:
系统默认的参数other world
c is {'name': 'dab'}
其他参数 name
从上面的结果可以看到,**c是把多余的选项当作字典进行储存。
python学习:函数的学习的更多相关文章
- Python学习---函数的学习1209[all]
1.基础函数 2.高阶函数 3.递归函数 4.内置函数 5.匿名函数和闭包
- .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]
今天主要记录,Python中函数的使用以及异常处理. 一.函数: 1.函数的创建以及调用. def Add(val1,val2): return val1+val2; print Add( ...
- python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法
python3.4学习笔记(二十) python strip()函数 去空格\n\r\t函数的用法 在Python中字符串处理函数里有三个去空格(包括'\n', '\r', '\t', ' ')的函数 ...
- python函数基础学习
函数的定义与调用: def 函数名(参数1,参数2): ‘’’函数注释’’’ print(‘函数体’) return 返回值 定 义:def关键字开关,空格之后接函数名和圆括号,最后冒号结尾 def ...
- python学习-函数和lambda表达式(五)
5.2函数参数 位置参数:根据位置传入参数 关键字参数:根据参数名来传入参数 def girth(width, height): print("width:", width) pr ...
- Python函数参数学习笔记
1.Python中函数参数类型可分为五种: f(x):x为位置参数: f(x,n=2):n为默认参数,调用时可以省略参数n,如f(5); f(*args):*args表示把args这个list或tup ...
- Python学习---基础函数的学习
1.1. 基础函数 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 灌输一个概念:Python中函数就是对象,函数和我们之前的[1,2,3],'abc ...
- python学习——函数返回值及递归
返回值 return语句是从python 函数返回一个值,在讲到定义函数的时候有讲过,每个函数都要有一个返回值.Python中的return语句有什么作用,今天小编就依目前所了解的讲解一下.pytho ...
- python学习——函数及其参数
函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.严格来说python只有函数,没有过程,人们理解的函数都是带有return的,而过程 ...
- Python装饰器模式学习总结
装饰器模式,重点在于装饰.装饰的核心仍旧是被装饰对象. 类比于Java编程的时候的包装模式,是同样的道理.虽然概念上稍有不同但是原理上还是比较相近的.下面我就来谈一谈我对Python的装饰器的学习的一 ...
随机推荐
- NavBarControl
https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraNavBarNavBarControltopic Views h ...
- mac os 添加用户到组 命令
mac os 添加用户到组 命令 dscl localhost 进入组目录 cd /Local/Default/Groups 使用ls 你就可以看到所有的group,? /Local/Default/ ...
- C# lock
一. 为什么要lock,lock了什么? 当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待.但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当 ...
- Karma Police - Radiohead
音乐赏析似乎是一件没有意义的工作,与电影相比音乐更加抽象,不同的人对同一首歌会有完全不同的解读. 但一首歌一旦成为经典,就有解读它的必要,因为它一定诉出了一个群体的某些情绪. Karma police ...
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等. ...
- Win7精简成功后的总结
vsax 发表于 2014-7-20 20:59:43 https://www.itsk.com/forum.php?mod=viewthread&tid=333816&highli ...
- 在腾讯云上创建您的SQL Cluster(4)
版权声明:本文由李斯达原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/255 来源:腾云阁 https://www.qclo ...
- Spark排错与优化
一. 运维 1. Master挂掉,standby重启也失效 Master默认使用512M内存,当集群中运行的任务特别多时,就会挂掉,原因是master会读取每个task的event log日志去生成 ...
- linux 安装 apache2.2.31
Linux下安装和配置Apache 概要:本文介绍在CentOS5.4 Linux中安装和配置Apache2.2.14,并且实现Apache和Tomcat6的整合.文章分为三部分,分别是删除系统自带的 ...
- web组件
慕课网:http://www.imooc.com/learn/99 js 在实战中的分层: 应用层 框架组件-框架通用组件.定制组件.独立组件 框架core(框架核心层) 浏览器底层