函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

定义和调用

>>> def add(x,y):
... print('x=',x)  #Python3必须加"()"
... print('y=',y)
... return x+y
...
>>> add(1,2)
x= 1
y= 2
3

参数收集

#当参数不确定时,使用*定义函数,并返回一个元组

def func(x,*arg):
print (x)
result=x
print (arg)
for i in arg:
result +=i
return result
print (func(1,2,3,4,5,6,7,8,9))
#返回结果
1                 #对应print (x)
(2, 3, 4, 5, 6, 7, 8, 9) #对应print (arg)
45                #最后print (func(1,2,3,4,5,6,7,8,9))结果

#当参数为赋值语句时,使用**定义函数,并返回一个字典

>>> def f(**karg):
... print (karg)
...
>>> f(a=1,b=2,c=3) #当参数为非赋值语句时,报错
{'c': 3, 'a': 1, 'b': 2}

*和**定义函数综合举例

>>> def foo(x,y,z,*arg,**karg):
... print (x)
... print (y)
... print (z)
... print (arg)
... print (karg)
...
>>> foo('taylor',1989,'adele')
taylor
1989
adele
()
{}
>>> foo(1,2,3,4,5)
1
2
3
(4, 5)
{}
>>> foo(1,2,3,4,5,name="taylor")
1
2
3
(4, 5)
{'name': 'taylor'}

几种定义方式汇总

1. def a(p1,p2,p3) #参数的位置很重要
2. def a(p1=v1,p2=v2) #定义的时候直接赋值
3. def a(*arg) #适用不确定个数
4. def a(**arg) #必须接收arg=val的形式

几个函数

lambda

>>> num=[1,2,3,4,5]
>>> lam=lambda x:x+1 #函数后直接使用变量,变量后为冒号隔离表达式,表达式的结果为函数的返回值
>>> n=[]
>>> for i in num:
... n.append(lam(i))
...
>>> n
[2, 3, 4, 5, 6]

map

map(func,seq),对可迭代对象的每个元素执行func函数

>>> num=[1,2,3,4,5]
>>> list(map(lambda x:x+1,num)) #python3需要将map转换成list格式,否则报错,因为直接使用map返回的是iterators
[2, 3, 4, 5, 6]
>>> l1=[1,2,3,4,5]
>>> l2=[9,8,7,6,5]
>>> list(map(lambda x,y:x+y,l1,l2))
[10, 10, 10, 10, 10]

reduce

reduce(func,seq),func必须为二元操作函数,先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。横向运算。

>>> from functools import reduce        #python3无法直接使用reduce函数,需先引用
>>> reduce(lambda x,y:x+y,[1,2,3,4,5]) #“横着”依次计算
15

filter

filter(func, iterable),对iterable中的元素执行func,并将满足func的元素返回新list中

>>> l=[1,2,3,4,5]
>>> list(filter(lambda x:x>3,l)) #同reduce函数
[4, 5]

  等价语句

>>> [x for x in l if x>3]        #三元操作符
[4, 5] #三元操作符
A=Y if x else Z
如果x为真,执行A=Y
如果x为假,执行A=Z

Python:函数的更多相关文章

  1. python 函数之day3

    一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...

  2. Python函数作用域的查找顺序

    函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...

  3. Python函数讲解

    Python函数

  4. Python函数信息

    Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...

  5. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  6. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

  7. Python函数解析

    对于Python的函数,我们需要记住的是: 1. 函数的默认返回值是None. 2. python是一个自上而下逐行解释并执行的语言.因此,函数的定义必须在函数被调用之前.同名的函数,后定义的会覆盖前 ...

  8. Python入门笔记(18):Python函数(1):基础部分

    一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...

  9. Python函数1

    Python 函数命令的使用 想想我们之前数学中学到的函数,首先我们需要定义一个函数,例如f(x)=x, 当x输入任意数的时候,f(x)都能输出和x相等的数值. 那么在Python中是如何实现的呢? ...

  10. python函数传参是传值还是传引用?

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

随机推荐

  1. ECMA中的switch语句

    switch借鉴自其他语言,但也有自己的特色. 1.可以在switch语句中使用任何数据类型(数值.字符串.对象等),很多其他语言中只能使用数值. 2.每个case的值不一定是常量,可以是变量或者表达 ...

  2. ES搜索引擎-简单入门

    基本概念: 索引Index es吧数据放到一个或者多个索引中,如果用关系型数据库模型对比,索引的地位与数据库实例(db)相当.索引存放和读取的基本单元是文档(document).es内部使用的是apa ...

  3. 按年、季度、月分组&&计算日期和时间的函数

    Mysql 按年.季度.月分组 按月度分组: select DATE_FORMAT(i.created_at, '%Y-%m月')...................GROUP BY DATE_FO ...

  4. DP4J -- mnist

    标签(空格分隔): DeepLearning mnist mnist是一个数据集,其中包含很多手写数字的图片,每张图片都已经打上了label: Deep Learning 传统的机器学习神经网络由一层 ...

  5. 使用scp在windows和Linux之间互传文件

    转自:http://yangzhongfei.blog.163.com/blog/static/4610987520103141050918/ 为了进行系统维护操作,有时需要再windows和linu ...

  6. Mifare系列7-安全性(转)

    文/闫鑫原创转载请注明出处http://blog.csdn.net/yxstars/article/details/38087245 飞利浦的MIFARE卡 由于它的高安全性在市场上得到广泛应用,比如 ...

  7. IOS7 edgesForExtendedLayout

    在iOS 7中,苹果引入了一个新的属性,叫做[UIViewController setEdgesForExtendedLayout:],它的默认值为UIRectEdgeAll.当你的容器是naviga ...

  8. div居中方法

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. javascript字符转直接量和转义字符

    直接量: 你可以用单引号或者双引号来表示字符串的直接量.但是js的字符串必须是Unicode 字符序列. 转义字符: 主要用在字符串中,包涵控制字符,以及当前操作系统余元所不允许直接输入的字符. 转义 ...

  10. 实验二 用C语言表示进程的调度

    实验二 一. 实验目的 通过模拟进程的调度,进一步了解进程的调度的具体过程. 二. 实验内容和要求 1.进程PCB的结构体定义 2.定义队列 3.输入进程序列 4.排序(按到位时间) 5.输出进程运行 ...