Python学习笔记之函数

作者:金牛区福生殡葬服务部 来源:www.cdfsbz.com 发布时间:2017-09-03 12:40:09
Python学习笔记之函数

python学习过程中重要的知识点函数。

1. 函数的定义:

使用关键字***def*** def sayhello(): print "hello word"

以上函数功能只是做了简单的屏幕输出

2.函数调用

函数定义完之后,需要显示调用才能执行函数体里的代码

sayhello()

在显示的调用了sayhello()函数的时候,在屏幕上就直接打印出了”hello world” 字符串。

3.带有参数的函数

以上只是定义的函数只是最简单的函数定义和调用,我们也可以在函数定义的时候,设置函数的参数,此时的参数称为 形参

def sayhello(name): print "hello word "+name

‘+’ 号用于字符串的链接,传入的参数只能是字符串,反之会报错

4.带有返回值的函数

有时候函数处理完一系列逻辑之后,要给调用者返回处理结果,默认返回None

def getsum(x,y): return x+y

函数定义两个参数,并计算两个数的值,并返回给调用者。

以上是函数的简单定义,调用,带有参数的函数定义,函数的返回值,接下来说下函数调用过程中的需要主要的问题

5.冗余参数处理

现在我们重新定义一个带有一个参数的函数

def printinfo(name): print name

定义之后,我们调用函数,正常普通的调用。

printinfo("tom")

屏幕输出为:tom,但是我这里调用函数的时候,传的是一个值,但是我要传多个值呢或者我要是不传值呢?
首先我们来看下我不传值会有什么问题

printinfo()

程序报错

Traceback (most recent call last): File "/Users/zhangyibo/PycharmProjects/demo/demo/demo2.py", line 86, in printinfo() TypeError: printinfo() takes exactly 1 argument (0 given)

根据错误信息可以看出是一个类型错误,说这函数需要传递一个参数,但是实际没有传递参数。这个时候怎么办呢?那我就是不想传递参数,我还想执行函数呢?有没有办法?这个必须是有滴,不过我们需要重新定义此函数如下:

def printinfo(name="tom"): print name

就是这个函数升级函数,就是在参数的后面加了个默认值,就可以解决了。
可是如果我们要是传递多个参数呢?

printinfo("tom","lucy")

没错又报错了,赶紧看下错误吧

printinfo("tom","lucy") TypeError: printinfo() takes at most 1 argument (2 given)

没错说传递了多余的参数。那这又怎么办呢,放心还又解决方案重新定义函数:

def printinfo(name="tom",*args): print name print args

重新调用,发现不报错了,那*args是什么呢?其实就是告诉程序可以接受多个参数,并把多余的参数以元祖的方式存储起来。

printinfo("tom","lucy","kitty")

现在传递三个参数也没问题了哈哈。

好像函数也就这么多东西,基本简单的函数使用也就这些,但是我们来研究下函数的更高级的特性

首先我们来定义一个两个参数的函数

def getinfo(name,age): print "name:",name,"age:",age

定义了一个普通的函数,我们正常调用的时候就是传递两个参数的值进去就ok但是现在我又个列表

lists=["tom",13]

我这个列表里边也有两个字段,我现在能getinfo(lists) 这样的方式调用吗?如果你看了上边的内容就非常肯定的说不能,会有TypeError的,没错,那怎么才能我以lists为参数传递进去不报错呢,这里我们没必要修改函数,只需要修改函数掉调用方式就行

getinfo(*lists)

ok完美解决了,*号就是告诉函数我是个列表

那现在我们有个字典形式的数据dic={"name":"tom","age":19}
我们单独把字典传进入如何如何呢getinfo(dic) 没错它又报错了,这个怎么办一个是告诉函数我穿进去的是一个列表,那字典怎么表示呢,getinfo(**dic) 没错就是*去表示接受的是一个字典。

是不是很神奇呢,但是我又有一个奇怪的想法,我定义一个如下的函数:

def saycat(name): print name

函数是正经函数,但是调用正经不正经我就不知道了哈哈

我们可以这样调用

saycat(“tom”) saycat(“tom”,1) saycat(“tom”,age=1)
1正常,但是2和3呢是什么鬼,肯定报错把,你猜的没错,这可怎么办呢,函数定义规定传入一个参数,我们这里传入的是多个参数,而且参数类型还不一样,那么我们根据多余的参数,去修改完善你的函数的健壮性把。 def saycat(name,*aggs,**kwargs): print name print aggs print kwargs

以上是简单的函数冗余参数的处理方案,以上内容就是所有简单函数定义,调用,和调用过程中参数冗余问题的解决,虽然简单,但是好记性不如烂笔头,以此笔记作为参考。如有不当多多包含

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:宜昌网站制作 http://yichang.666rj.com

  • 上一篇:node-webkit解析excel文档
  • 下一篇:最后一页
  • 
    COPYRIGHT © 2015 金牛区福生殡葬服务部 ALL RIGHTS RESERVED.
    购买cdfsbz.com友情链接、项目合作请联系客服QQ:2500-38-100 邮箱:2500-38-100#QQ.com(#换@)
    本站所有原创信息,未经许可请勿任意转载或复制使用 网站地图 技术支持:肥猫科技
    精彩专题:网站建设
    购买本站友情链接、项目合作请联系客服QQ:2500-38-100