一:返回值

当没有显式地返回元素时,Python 会返回一个None。如果函数返回多个对象,python 把他们聚集起来并以一个元组返回。

二:创建函数

1:强烈推荐,在函数体之前,编写函数的文档字符串。

2:在某些语言中,函数声明和函数定义区分开的。但在Python中,将这两者视为一体,函数的子句由声明的标题行以及随后的定义体组成的。

3:和其他高级语言类似,Python 也不允许在函数未声明(定义)之前,对其进行引用或者调用。下面给出几个例子来看一下:

def  foo():
print 'in foo()'
bar()

此时如果调用函数foo(),肯定会失败,因为函数bar()还没有定义:

>>> foo()
in foo()
Traceback (innermost last): File"<stdin>", line 1, in ?
File "<stdin>", line 3, infoo
NameError: bar

现在在函数foo()前给出bar()的定义:

def bar():
print 'in bar()' def foo():
print 'in foo()'
bar()

现在可以安全的调用foo(),而不会出现任何问题:

>>> foo()
in foo()
in bar()

甚至也可以在函数bar()前定义函数foo():

def foo():
print 'in foo()'
bar() def bar():
print 'in bar()' >>> foo()
in foo()
in bar()

这段代码是正确的因为:即使(在foo()中)对bar()进行的调用出现在bar()的定义之前,但foo()本身不是在bar()声明之前被调用的。换句话说,先声明foo(),然后再声明bar(),接着调用foo(),但是到那时,bar()已经存在了,所以调用成功。(这一点,在C语言中,是不成立的。)

4:除了加注释帮助理解函数之外,还有一种方式就是文档字符串。如果在函数的开头写下字符串,它就会作为函数的一部分进行存储,称为文档字符串。

5:函数也具有属性,可以自定义任何函数属性,可以在函数体之外定义函数属性。比如:

def  foo():
'foo() -- properly created doc string' foo.__hehe__ = 'foohehe' def bar():
pass bar.__doc__ = 'Oops, forgot the doc strabove'
bar.version = 0.1
bar.hehe = 'barhehe'

三:内部函数

在函数体内创建另外一个函数(对象)是完全合法的。这种函数叫做内部/内嵌函数。比如:

def  outer():
print'in outer' def inner():
print'in inner' inner() outer()

结果是:

in outer
in inner

内部函数在外部函数的作用域之内。如果没有任何对inner ()的外部引用,那么除了在函数体内,任何地方都不能对其进行调用。

五:传递函数

在Python中,函数也是一种对象,所以,函数可以被引用的,也作为参数传入函数,以及作为列表和字典等等容器对象的元素。

函数有一个独一无二的特征使它同其他对象区分开来,那就是函数是可调用的

Python基础:12函数细节的更多相关文章

  1. python基础12 ---函数模块2

    函数模块 一.sys函数模块详解 1.sys.argv[x] 功能:从程序外部接受参数,接收的参数个数可以是多个,在程序内部sys.argv吧这些外部参数转换成元组的形式,然后以索引x的方式在内部取出 ...

  2. python基础(12):函数(二)

    1. 函数参数 之前我们说过了传参,如果我们需要给⼀个函数传参,⽽参数⼜是不确定的,或者我给⼀个函数传很多参数,我的形参就要写很多,很⿇烦,怎么办呢,我们可以考虑使⽤动态参数. 形参的第三种: 动态参 ...

  3. python基础——sorted()函数

    python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...

  4. python基础——filter函数

    python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...

  5. 十二. Python基础(12)--生成器

    十二. Python基础(12)--生成器 1 ● 可迭代对象(iterable) An object capable of returning its members one at a time. ...

  6. 八. Python基础(8)--函数

    八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x):     ' ...

  7. 『Python基础-12』各种推导式(列表推导式、字典推导式、集合推导式)

    # 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的 ...

  8. python基础——匿名函数

    python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便.  在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...

  9. python基础——返回函数

    python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回.  我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...

  10. python基础——匿名函数及递归函数

    python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...

随机推荐

  1. Django项目:CRM(客户关系管理系统)--19--11PerfectCRM实现King_admin分页显示条数

    登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html list_per_page = 2 #分页条数 list_per_page = 2 #分页条数 ...

  2. 根据网站运行日志猜测的百度蜘蛛ip

    da大部分文章都是吵来吵去,不准确 所以就不参考那些沙雕的文章了,直接自己统计一个 123.125.71.117 123.125.71.58 220.181.108.115 220.181.108.1 ...

  3. 使用Spring Data Redis时,遇到的几个问题

    需求: 1,保存一个key-value形式的结构到redis 2,把一个对象保存成hash形式的结构到redis 代码如下: // 保存key-value值         pushFrequency ...

  4. linux升级或安装程序后无法进入图形界面

    报错如下: Failed to start the X server (your graphical interface). lt is likely that it is not set up co ...

  5. pycharm使用gitlab输错密码解决办法

    在pycharm中使用http方式连接gitlab,在测试连接的时候提示输入用户名,密码.密码输错后,以后的每次test都是使用错误的密码,在删除pycharm后也是一样,解决方法是在控制面板\用户帐 ...

  6. PHP配置环境中开启GD库

    下配置好的PHP环境中,GD库不像windows那样可以直接用,而是默认关闭,需要把它打开,去到php.ini文件中 找到php_gd2.dll把分号去掉即可.(注:GD库跟绘制二维码等有关)

  7. 媒体查询(media):设置PC端网页居中显示

    @media screen and (min-width: 768px){ body{ background-color: #EAEAEA; } #fater{ width: 640px; margi ...

  8. day38 16-Spring的Bean的装配:注解的方式

    Struts 2和hibernate也使用注解,但是使用注解在以后的开发中应用不多.但是可以说在整合的时候如何进行注解开发.在Spring中,注解必须会玩. package cn.itcast.spr ...

  9. NOIP模拟 17.8.20

    NOIP模拟17.8.20 A.阶乘[题目描述]亲爱的xyx同学正在研究数学与阶乘的关系,但是他喜欢颓废,于是他就制作了一个和阶乘有关系的数学游戏:给出两个整数 n,m,令 t = !n,每轮游戏的流 ...

  10. Spring表达式语言:SpEl

    概念: 是一个支持运行时查询和操作的对象图的强大的表达式语言. 语法类似于EL:SpEl使用#{ ...}作为定界符,所有在大括号中的 字符都将被认为是SpEl SpEl为bean的属性进行动态赋值提 ...