python函数基础

函数是python为了代码最大程度的重用和最小化代码冗余(rǒng yú)而提供的最基本的程序结构。

python函数中一些主要概念
def是可执行的代码
def创建了一个对象并将其赋值给某一变量名
函数是通过赋值(对象引用)传递的

def的一般格式

def	<name>(arg1,arg2,...argN):
	<statements>

或者包含一条return语句

def	<name>(arg1,arg2,...argN):
	...
	return <value>

python的def语句实际上是一个可执行的语句:当它运行的时候,它创建一个新的函数对象并将其赋值给一个变量名。(python中所有的语句都是实时运行的,没有像独立的编译时间这样的流程)因为它是一个语句,一个def可以出现在任一语句可以出现的地方——甚至是嵌套在其他的语句中。

定义和调用
在这里插入图片描述
在这里插入图片描述

多态
就像我们看到那样,times函数中表达式 x*y 的意义完全取决于x和y的对象类型,同样的函数,在下一个实例执行的乘法,在另一个实例下执行却是重复。python将对某一对象在某种语法的合理性交由对象自身判断。实际上,” * “在针对正被处理的对象进行了随机应变。这种依赖类型的行为称为多态。

多态就是一个操作的意义取决于被操作对象的类型
因为python是动态类型语言,所有多态在python中随处可见。在python中每个操作都是多态的操作:print、index、 * 操作符,还有很多。

例:寻找序列的交集
在这里插入图片描述当然实际上,这个函数可用一个单独的列表解析表达式来替代,因为它展示了经典的循环搜集器代码模式:
在这里插入图片描述
和所有的python中的函数一样,intersect是多态的。也就是说,它可以支持多种类型,只要其支持扩展对象接口:
在这里插入图片描述
给函数传递了不同类型的对象(一个列表和一个元组【混合类型】),并且仍然是选择出共有的元素。因为你没有必要去定义预先定义参数的类型,这个intersect函数很容易对传递给它的任何序列对象进行迭代,只要这些序列支持预期的接口就行了。
对于intersect函数,这意味着第一个参数必须支持for循环,并且第二个参数支持成员测试。所有满足这两点的对象都能够正常工作,与他们的类型无关。
如果我们传入了不支持这些接口的对象(例如,数字),python将会自动检测出不匹配,并抛出一个异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值