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

定义和调用

>>> 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. Git使用教程【转】

    Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是 ...

  2. error: could not read CFBundleIdentifier from Info.plist (null)解决方法之一

    出现这种错误的原因可能很多,以下是我遇到的一种情况: 项目移植到新的环境 编译报错:  error: could not read CFBundleIdentifier from Info.plist ...

  3. AngularJs开发环境搭建

    1. 安装Sublime Text3 常用插件安装:AngularJs, Autoprefixer, BracketHighlighter,ConvertToUTF8,CSScomb,DocBlock ...

  4. Java生成随机验证码

    package com.tg.snail.core.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  5. php-sql-parser sql防注入脚本

    <?php /** * SQL Parser from: http://code.google.com/p/php-sql-parser/ * License: New BSD */ class ...

  6. 命令行用sublime打开当前目录

    执行    ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" subl 就可以在命令行用 ...

  7. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

    原文地址:http://linuxme.blog.51cto.com/1850814/375752 今天将阿里云服务器更换了一下系统盘,重启成功后,再次通过终端访问阿里云的公网IP报以下信息: @@@ ...

  8. mySQL数据库Sql语句执行效率检查--Explain命令

    mysql性能的检查和调优方法 Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的 ...

  9. angularjs的$on、$emit、$broadcast

    如何在作用域之间通信呢? 1.创建一个单例服务,然后通过这个服务处理所有子作用域的通信. 2.通过作用域中的事件处理通信.但是这种方法有一些限制:例如,你并不能广泛的将事件传播到所有监控的作用域中.你 ...

  10. AWT编程学习01(未完成)

    本文资料来源:<java疯狂讲义> 作者:李刚 终于要学习这一部分了~~虽然很多人(明明是绝大多数的人)说学这个没有用...而且有点过时了...但我觉得很有意思啊...感兴趣就学~~反正多 ...