函数


函数式编程最重要的是增强代码的重用性和可读性

  1.  定义和使用

def 函数名(参数):

  ...

  函数体

  ...

  返回值

函数的定义主要有如下要点:

def:表示函数的关键字

函数名:函数的名称,日后根据函数名调用函数

函数体:函数中进行一系列的逻辑计算

参数:为函数体提供数据

返回值:当函数执行完毕后,可以给调用者返回数据

举例:

 def mail():
n = 123
n += 1
print(n)
mail()
f = mail
f()

结果:

124

124

1-1 返回值

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

 def show():
print('a')
return [11,22]
print('b')
show()

结果:

a

1-2 参数

函数中有三种不同的参数:

  • 普通参数
  • 默认参数
  • 动态参数

普通参数

 def show(a1,a2):
print(a1,a2) show(11,22)

结果:

11  22

默认参数:默认参数需要放在参数列表最后

 def show(a1,a2=99):
print(a1,a2) show(11)

结果:

11  99

指定参数

 def show(a1,a2):
print(a1,a2) show(a2=123,a1=190)

结果:

190  123

动态参数

 def show(*arg):# * - 接收参数并转换元组
print(arg,type(arg)) show(1,56,78,8979)

结果:

(1,56,78,8979) <class 'tuple'>
 def show(**arg): #  ** - 接收参数并转换字典
print(arg,type(arg)) show(n1=78,uu=123)

结果:

{'uu': 123, 'n1': 78} <class 'dict'>

 def show(*arg1,**args):# 一个*的在前,两*在后
print(arg1,type(arg1))
print(args,type(args)) show(12,34,34,54,n9=33,n2=99)# 一个*的在前,两*在后

结果:

(12, 34, 34, 54) <class 'tuple'>

{'n2': 99, 'n9': 33} <class 'dict'>

 def show(*arg1,**args):# 一个*的在前,两*在后
print(arg1,type(arg1))
print(args,type(args)) l = (11,22,3,4)
d = {'n1':89,'k1':'hello'}
show(l,d)

结果:

((11, 22, 3, 4), {'k1': 'hello', 'n1': 89}) <class 'tuple'>

{} <class 'dict'>

很明显,结果不是我们想要的。关键是如果我们使用show(l,d)

那么和我们使用show(1,56,78,8979) 没有什么区别。所以,为了解决这种冲突问题,只需要在 l 前加一个*,在 d 前加两个 * 即可:

 def show(*arg1,**args):# 一个*的在前,两*在后
print(arg1,type(arg1))
print(args,type(args)) l = (11,22,3,4)
d = {'n1':89,'k1':'hello'}
show(*l,**d)

结果:

(11, 22, 3, 4) <class 'tuple'>

{'n1': 89, 'k1': 'hello'} <class 'dict'>

符合我们的要求

动态参数实现字符串格式化:

 s1 = "{0} is {1}"
ret = s1.format('Young','handsome')
print(ret)

结果:

Young is handsome

 s1 = "{0} is {1}"
l = ['Young','handsome2']
ret = s1.format(*l)
print(ret)

结果:

Young is handsome2

 s1 = '{name} is {value}'# 字典这里就不是{0}、{1}了,而是用{key}、{value}
ret = s1.format(name='Young',value='handsome')
print('第一:',ret) s2 = '{name2} is {key}'
d = {'name2':'Young','key':'smart'}
ret = s2.format(**d)
print('第二:',ret)

结果:

第一: Young is handsome

第二: Young is smart

 2.  内置函数

any : 只要有一个是真的就是真的

ord 和 chr配合使用

chr    ord    random.randint 可以生产验证码

enumerate

eval

map

filter

 li=[1,22,33,45,74,788]
def func(num):
if num>33:
return True
else:
return False
n = filter(func,li)
print(list(n))

结果:

[45, 74, 788]

将列表中大于 33 的元素拿出来

Python学习笔记 之 函数的更多相关文章

  1. Python学习笔记之函数

    这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...

  2. 小甲鱼:Python学习笔记003_函数

    >>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...

  3. Python学习笔记 - day6 - 函数

    函数 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这叫函数的调用).函数在编程语言中有基本分为:预 ...

  4. Python学习笔记系列——函数

    今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...

  5. Python学习笔记(五)函数和代码复用

    函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Python提供了许多内建函数,比如print().同样,你也可以自己创建函数, ...

  6. python学习笔记(4)--函数

    1.函数 函数是指将一组语句的集合通过一个名字封装起来.要想执行这个函数,只需调用其函数名即可. 函数的特性: 1.减少重复代码 2.使程序变的课扩展 3.使程序变得易维护 语法定义: def pri ...

  7. Python学习笔记-Day3-python函数

    1.为什么要用函数? 提高代码重复利用率,减少代码冗余.封装模块化代码,便于调用 2.函数声明定义(注意:函数先声明后调用) 注意:函数的reture循环中的exit功能一样(函数不执行,终止) 函数 ...

  8. Python学习笔记11—函数

    建立第一个函数 /usr/bin/env Python #coding:utf-8 def add_function(a,b): c = a+b print c if __name__==" ...

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

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

  10. Python学习笔记_week3_函数

    一.介绍 1.面向对象(华山派)--->类(独门秘籍)--->class(定义的关键字) 2.面向过程(少林派)--->过程--->def 3.函数式编程(逍遥派)---> ...

随机推荐

  1. 详解tintColor属性

    tintColor属性是iOS7之后新加的一个属性,这个属性定义了一个非默认的着色颜色值,其值的设置会影响到以视图为根视图的整个视图层次结构.它主要是改变控件的颜色,以获取一些有意思的视觉效果. ti ...

  2. FMDB第三方框架

    FMDB是同AFN,SDWebImage同样好用的第三方框架,它以OC的方式封装了SQLite的C语言API,使得开发变得简单方便. 附上github链接https://github.com/ccgu ...

  3. python之(re)正则表达式上

    python正则表达式知识预备 正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表 ...

  4. Hadoop系列教程<一>---Hadoop是什么呢?

    Hadoop适合应用于大数据存储和大数据分析的应用,适合于服务器几千台到几万台的集群运行,支持PB级的存储容量.Hadoop典型应用有:搜索.日志处理.推荐系统.数据分析.视频图像分析.数据保存等.但 ...

  5. transform图形变化

    <!DOCTYPE HTML> <head> <meta charset = "utf-8"> <title>canvas</ ...

  6. 如何自动化一键部署PHP项目

    1.技能需求 完成自动化一键部署PHP需要:PHP(略懂),Shell(略懂),git(略懂) 2.最终效果 输入密码,回车,5~20秒后(一般一天一次持续交付,部署的代码量和sql脚本都不会很大) ...

  7. SQL SERVER 2008 Reporting Services 的一些小问题集合

    实验环境:服务器  Windows Server  2008 R2 Standard 64bit                   数据库  SQL SERVER 2008 R2 Standard ...

  8. Linux字符串截取命令

    一.简单截取 假设有变量 var=http://www.google.com/test.htm 1. # 号截取,删除左边字符,保留右边字符.echo ${var#*//}其中 var 是变量名,#  ...

  9. Windbg跟踪临界区的BUG

    最近跟踪了一个程序的界面卡死问题,该卡死偶尔出现,在抓到一次dump后用windbg载入分析,打印出函数调用堆栈后,一眼可以看出是临界区死锁了. 代码: 0:000:x86> kb ChildE ...

  10. winform/窗体鼠标事件编程中的几个问题

    1.进行.net窗体的开发,经常用到鼠标事件,如MouseDown/MouseUp/MouseMove/MouseClick等.可是有时候给控件添加鼠标事件,就是不响应,怎么办呢! 答案:1.控件是否 ...