函数

>>> def funTest(param1):
... 'this is function document string.' #正文需要有缩进
... return param1
...
>>> funTest(12)
12
>>> funTest.__doc__ #访问文档字符串
'this is function document string.'

函数实参,相当于一个赋值操作,为形参赋值

>>> def fuc1(dict):
... dict['one'] = 1 #函数1修改参数内容
...
>>> def fuc2(dict):
... dict = {} #函数2为参数重新赋值
...
>>> d = {'one':11, 'two':22}
>>> fuc1(d) #形参dict赋值为d,即dict和d指向同一地址,修改dict的数据,自然就修改了d的数据
>>> d
{'two': 22, 'one': 1}
>>> fuc2(d) #dict和d指向同一地址,但是重新为dict赋值,则dict与d不再指向同一地址,所以d不变。
>>> d
{'two': 22, 'one': 1} >>> dd = {'hello':'world'}
>>> fuc1(dd.copy()) #传入dd的一个副本,即dict与dd不指向同一地址,所以dd也不变
>>> dd
{'hello': 'world'}

关键字参数:调用时,使用参数名提供的参数。

定义时使用关键字参数,还可以提供默认值.

参数在给定默认值的时候是可选的。

#打印长方形的名字和宽高
>>> def descRect(name, width, height):
... print 'name:%s, width:%d, height:%d' % (name, width, height)
...
>>> descRect('test', 11, 22)
name:test, width:11, height:22
>>> descRect(width=1, height=2, name='test') #定义为位置参数,使用关键字参数调用,与书写顺序无关
name:test, width:1, height:2 >>> def descRectangle(name, width=1, height=1):
... print 'name:%s, width:%d, height:%d' % (name, width, height) #name是位置参数,width和height是关键字参数,且提供了默认值
...
>>> descRectangle('small', 2, 3) #参数齐全
name:small, width:2, height:3
>>> descRectangle('default') #位置参数必需,关键字参数有默认值
name:default, width:1, height:1
>>> descRectangle('default', 2) #没有指明关键字参数名字的,按照顺序
name:default, width:2, height:1
>>> descRectangle('default', height=2) #指明了关键字参数名字的,替换默认值
name:default, width:1, height:2
>>> descRectangle(name='test')
name:test, width:1, height:1

收集参数

参数名之前加一个星号,表示收集其他的位置参数。

参数名之前加两个星号,表示收集其他的关键字参数。

>>> def chooseOne(myChoose, *others):
... print 'I choose %s' % myChoose
... print 'others are ', others
...
>>> chooseOne('A', 'B', 'C', 'D', 'E')
I choose A
others are ('B', 'C', 'D', 'E')
>>> chooseOne('A', 'B')
I choose A
others are ('B',)
>>> chooseOne('A')
I choose A
others are () >>> def printParams(**param):
... print param
...
>>> printParams(x=1,y=2,z=3)
{'y': 2, 'x': 1, 'z': 3}
>>> printParams(1,y=2,z=3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: printParams() takes exactly 0 arguments (3 given)
>>> >>> def print_params(x,y,z=0):
... print "x=", x, ", y=", y, "z=", z
...
>>> param1=(2,3)
>>> dict={"z":66}
>>> print_params(param1, dict) #两个位置参数,没有关键字参数
x= (2, 3) , y= {'z': 66} z= 0
>>> print_params(*param1, **dict) #一个位置参数列表,一个关键字参数列表
x= 2 , y= 3 z= 66

获取全局变量字典 globals()

局部作用域内声明一个全局变量 global x。之后对x操作,全局变量会相应改变。

python函数是可以嵌套的,即可以在一个函数中定义另一个函数。

内建函数:

reduce会将序列中的前两个元素,与给定的函数联合使用,并且将他们的返回值和第三个元素继续联合使用,直到整个序列都处理完毕,并且得到一个最终结果。

map(func, seq[, seq,...]) 对序列中的每个元素应用函数

filter(func, seq) 返回其函数为真的元素的列表

reduce(func, seq[, initial]) 等同于func(func(func(func(func(seq[0], seq[1])), seq[2]), seq[3]), ...)

sum(seq) 返回seq中所有元素的和

apply(func[, args[, kwargs]]) 调用函数,可以提供参数

#reduce
>>> reduce(lambda x,y : x+y, range(11))
55 #map
>>> def addOne(x):
... return x+1
...
>>> map(addOne, range(5))
[1, 2, 3, 4, 5] #filter
>>> def getNum(x):
... if(x>2):
... return 1
... return 0
...
>>> filter(getNum, range(5))
[3, 4]

python笔记之函数的更多相关文章

  1. Python:笔记(2)——函数与模块

    Python:笔记(2)——函数与模块 Python函数 关于函数 1.我们可以使用Help来查看函数的帮助信息 2.调用函数的时候,如果传入的参数数量或者类型不符合均会报错. 3.函数名其实就是一个 ...

  2. python笔记22-literal_eval函数处理返回json中的单双引号

    前言 在做接口测试的时候,最常见的接口返回数据就是json类型,json类型数据实际上就是字串,通常标准的json格式是可以转化成python里面的对应的数据类型的 有时候开发返回的数据比较坑,不按常 ...

  3. python笔记4 - 函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这 ...

  4. Python笔记008函数(2)

    1.        昨日内容回顾: def 函数(): 函数体 return 值 如果不写return,默认返回None.可以单独返回一个值,也能够以元组的形式返回多个值.(不要把print和retu ...

  5. python笔记-字符串函数总结

    字符串函数: chr() 数字转ASCII chr(96)="a" ord() ASCII转数字 ord("a")=96 isspace() 判断是否为空格 s ...

  6. Python笔记:调用函数,带扩号和和不带括号的区别

    调用函数,如果带括号,那么是调用函数运行后的结果, 调用函数不带括号,调用的是函数本身 例如: def cun (a,b): return a+b print(cun) : 调用函数,打印的是函数 p ...

  7. Python笔记-built-in函数,文件操作,lambda函数

    Built-In: i = abs(123) print(i) j = abs(-123) print(j)#123#123 #all,需要传一个可迭代的东西,里面所有的值是真,返回真 r1 = al ...

  8. 【python笔记】Qt+云函数 实现简单的登录框制作

    [python笔记]Qt+云函数 实现简单的登录框制作 备注:前置条件:QtDesigner.pycharm.PyQt5.配置好的云函数(百度的叫函数计算CFC,用来充当一个简陋的服务器,主要是免费) ...

  9. Python学习笔记7-把函数当参数传递、指定可变参数

    把函数当参数传递 # 函数参数传递 # 面向对象编程就是把对象传来传去 # 面向函数编程就是把函数传来传去 def mytest(num): return num * 2 # # 不光可以传递变量,还 ...

随机推荐

  1. WPF 照片墙的实现

    主要参照了DevExpress的PhotoGallery实例的实现. 效果如下: 照片墙核心代码如下: PhotoGallery.xaml <local:CarouselDemoModule x ...

  2. Spring Data JPA 入门Demo

    什么是JPA呢? 其实JPA可以说是一种规范,是java5.0之后提出来的用于持久化的一套规范:它不是任何一种ORM框架,在我看来,是现有ORM框架在这个规范下去实现持久层. 它的出现是为了简化现有的 ...

  3. LOJ6001 - 「网络流 24 题」太空飞行计划

    原题链接 Description 有个实验和个仪器,做实验有报酬买仪器有花费.每个实验都需要一些仪器,求最大净收益(实验报酬仪器花费),并输出一组方案. Solution 实验向所需仪器连边,实验的点 ...

  4. 在SpringBoot使用Druid进行数据监控

    前言 之前在构建项目初始设计的时候在选择数据库连接的时候就看到Druid有这样的强大的功能.数据监控.对于一个项目来说,数据监控特别重要,之前使用对于数据库的监控都是通过mysql的日志等系统来完成的 ...

  5. SpringMvc Json LocalDateTime 互转,form urlencoded @ModelAttribute 转换

    JDK8 的LocalDate 系列日期API ,比Date 或者 Calendar 都好用很多,但是在SpringMvc 自动装配会有点小问题 会导致抛出类似异常 default message [ ...

  6. NewLife.XCode 上手指南2018版(一)代码生成

    目录 NewLife.XCode 上手指南2018版(一)代码生成 NewLife.XCode 上手指南2018版(二)增 NewLife.XCode 上手指南2018版(三)查 NewLife.XC ...

  7. mysql varchar vs oracle varchar2

    1.错误提示: mysql的Data truncation: Data too long for column 'path' at row 1 错误原因: 1.字段过长而导致出错的, 2. 可能是因为 ...

  8. 【django之form和认证系统小练习】

    作业要求: 作业 : 基于form表单和form组件作业注册页面 基于认证系统实现登录,注册,注销,修改密码 """ Django settings for day20_ ...

  9. redis绑定ip以及启动和查看启动状态

    改绑定ip: 或许是对redis的了解还不够多的缘故,单单只是从安装和启动来讲,个人觉得好像是比mongodb和mysql要简单一些. 我的安装包是这个:http://download.csdn.ne ...

  10. Android程序启动过程深入解析

    当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Linux内核? 桌面系统linux内核与Android系统linux内核有什么区别? 什么是引导装载程序 ...