python函数定义的基本格式_ExASIC: python的函数(一):基本概念

python的函数(一):基本概念

我们之前学了一些基础的过程语句,如if else、while、for。随着我们python程序的功能越来越复杂,代码也就越来越长,因此我们就需要用“函数”来简化代码。我们通常把功能单一的、可重复利用的代码写成函数。函数的优点就是定义一次,可多次调用,提高的代码的可复用性、可阅读性、可维护性。

函数的定义

函数的定义用def关键字,一般格式如下:

def name(arg1, arg2, ...argN):

statement

return value

注:

def创建了一个函数对象,把函数名字name指向这个函数对象。

参数是可选的,可以没有参数,也可以有任意多个参数。参数的类型是任意的,可以是数字、字符串、列表,甚至是对象。

参数传递时是对象引用的方法,就是说传递的是指针。当函数内部修改输入参数时,外部的参数就真的被修改了。

return可以返回一个值,也可以仅仅是return,不带value,甚至还可以没有return。当后两种情况时,函数会默认返回None。

return语句可以出现在函数主体的任意位置,一旦遇到return语句,函数就执行结束了。

函数也是对象?

与C++、Perl等语言不同,python里的函数本身也是可执行代码(不是函数声明或者预定义)。python解释器看到def时,先创建一个函数对象,然后把函数名字指向刚创建的函数对象。因此,函数与数字、字符串、列表等一样,也是一种数据类型。

函数定义在运行时(Runtime)执行?

我们来理解python的函数与C++、Perl等语言的另一个区别。上面讲到python解释器遇到def就立即创建对象,所以说python没有预先定义的说法,也就没有compile的说法。因此,python的函数定义可以出现在任意的地方,例如下面的例子也是合法的:

def func_a (): #创建对象func_a

a = 1

def func_b (): #在func_a里面又创建了对象func_b

b = 2

又如:

if a > 10:

def func():

print("great than")

else:

def func():

print("less than")

func() #此处调用的函数是动态的

参数类型是可变的?

我们来看一个例子:

def times(x, y):

return x*y

times(2, 4) # = 8

times(3.14,2) # = 6.28

times("-", 20) # = "--------------------"

l = [1, 2]

times(l, 4) #[1, 2, 1, 2, 1, 2, 1, 2]

从这个例子是不是感觉python到与Perl有不一样的地方。参数类型由实际传递的对象类型决定。在python里,对象类型不同,操作符*乘号就做不同的事情。

这其实就是操作符的重载(C++里也是这样叫),实现了多态。

总结

到这里,我们把函数基础概念就讲完了。是不是学得特别累,python的函数竟有这么多不同之处。(我们既然学python,就必须一步一个脚印打好基础!)

我们总结一下要点:

函数也是对象。

函数定义是动态执行的,没有编译的过程,所以使用之前必须先定义。

函数定义可以出现在任意地方,甚至在另一个函数内部。

函数的参数是对象引用,是指针传递。

函数的参数类型由传入的对象决定,利用操作符重载,实现了多态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值