【Python学习】python学习手册--第十六章 函数基础

Python函数就是一些语句的集合,这些语句对传入的参数进行处理,处理完成后返回相关结果。函数是代码重用的基本单位。
与其他编程语言一样,Python函数可以

  • 最大化的代码重用和最小化代码冗余,一些重复代码,和需要重复执行的功能,都可以放在函数中,增加代码的复用性,让代码看上去简洁,不多余。
  • 流程分解:在一些很长的代码中,可以将各个主要部分的逻辑写为函数,这样使得代码在整体上更具可读性,更有维护性。

编写函数

  • def是可执行的代码。实际上,在if语句,while循环等复合语句中嵌套def都是合法的(甚至在某些场合还很有效),最常见的用法是,在一个模块文件中定义函数,在导入该模块时,函数自然而然就生成了。
  • def创建了一个对象并将其赋值给某一个变量名。def创建了一个函数对象,并且将这个对象的引用赋值给函数名。函数对象也可以赋值给其它变量名,保存在列表中。
  • lambda创建一个对象但将其作为结果返回。
  • return将一个结果对象发送给调用者。
  • yield向调用者发回一个结果对象,但是记住它离开的地方。函数也可以通过yield语句来返回值,并且记录下函数的状态让它挂起,方便后续能够恢复运行。
  • global声明了一个模块级的变量并被赋值。一般默认情况下,函数内的变量只是函数内部使用,无法作用于函数外部。使用global语句时,变量就可以在整个文件模块中使用。
  • nonlocal声明了将要赋值的一个封闭的函数变量。nonlocal语句允许一个内嵌的函数来赋值一条语法封闭的def语句的作用域中已经声明的变量。
  • 函数参数是通过赋值(对象引用)进行传递的。函数的参数实际上是对象的引用。
  • 参数、返回值以及变量并不是声明。在函数中,并没有对返回值和参数进行声明,事实上可以传递和返回任意类型的对象。

def语句

def语句的一般形式

def <name>(arg1,arg2,arg3....argN): #声明一个函数对象,并将其赋值给函数名<name>
    <statements>
    return <value>                 #一般都会有return语句,可以出现在函数体中的任何地方,用来结束函数体并返回值

函数执行return语句时,会返回到函数被调用的地方,继续往下执行。还有些情况下,函数并没有任何return语句,这时函数体按照正常的顺序执行语句,在结束执行时会返回默认的None对象,但这个值往往是被忽略掉的。
def语句是实时执行的,并没有像静态编译语言那样,有编译的流程。所以def语句可以出现在任何复合语句中。

if <test>:               #这样可以根据不同的条件,定义不同的函数内容。
    def func():
    <statements>
else:
    def func():
    <statements>

函数只是一个对象,而函数名就像变量名一样,是函数对象的引用,可以将函数对象赋值给其它函数名:

def func():<statements>
f2=func
f2()              #函数名f2调用函数名func所引用的函数对象
f2.attr=value     #像对象一样,函数对象也可以添加属性以供随后使用

Python的多态

简单的说,依赖类型的行为称为多态,其含义就是一个操作的意义取决于被操作对象的类型。
实际上,python中每个操作都是多态操作:print,index,*操作符,还有很多。多态让python更具有简易性和灵活性。在Python中,代码不应该关心特定的数据类型。如果不是这样,那么代码将只对编写时你所关心的那些类型有效,对其它类型可能会不兼容,这样会打乱代码的灵活性。大体上来说,在Python中为对象编写接口,而不是数据类型。在编写函数时,不需要去考虑对象的类型,而是要考虑传入的参数是否支持函数中的一些操作(比如是否可迭代,是否支持成员测试,如果不支持函数会报错,这正是我们想要的)

>>> 12+21
33
>>> "learning"+"python"
'learningpython'
>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值