python中的函数:函数定义、函数参数和函数调用

我们在编程过程中经常会遇到同样功能的代码不断地出现,使得编程成为枯燥无味的复制粘贴过程的循环。为了找乐子 让代码变得精简。我们需要函数来帮助我们。

1.函数定义

函数就是完成特定功能的代码块,本质上是对代码的封装。
函数的语法格式为:

def 函数名(参数):
    代码段  # 函数体

需要注意的是,函数名的命名规则与变量的命名规则一致。
函数名以数字、字母和下划线组成,不能以数字开头,不能与系统关键字重名,区分大小写。
函数名最好不要跟系统函数重名,否则,系统函数会被覆盖。

2.函数参数

2.1.形参和实参

形参就是函数定义时小括号里的变量,实参就是函数调用的时候小括号里的表达式。例如,

def add(a, b):
    return a + b

res = add(3, 5)

上面这段代码中a和b就是函数add()的形参,而3和5就是函数add()的实参。

注意:函数可以没有实参和形参。

def hello():
    print("hello world")

hello()

执行结果如下:

hello world

这个hello()函数是没有形参的,同时在函数调用时,我们也无需给hello()函数实参。

2.2.参数分类

2.2.1.位置参数

位置参数是python函数中最常用到的参数之一。位置参数要求实参顺序必须和形参顺序完全一致,并且一一对应。例如:

def intro(name, age):
    print("我是{},今年{}岁了。".format(name, age))

intro("小明", 18)

执行结果如下:

我是小明,今年18岁了。

这个函数中name对应"小明",age对应18。如果颠倒过来就与函数本意不一致了。

2.2.2.关键字参数

与位置参数不同,关键字参数不要求实参与形参顺序一致。函数调用时,实参以键值对的形式书写,其中键是形参名。例如:

def intro(name, age):
    print("我是{},今年{}岁了。".format(name, age))

intro(age=18, name="小明")

执行结果如下:

我是小明,今年18岁了。
2.2.3.默认值

如果在函数定义时给形参一个默认值,那么在函数调用时,就可以不给这个形参传值,可以简化调用。例如:

def intro(name, sex, age=20):
    print(name, sex, age)

intro('Tom', '男')
intro('Tom', '男', 25)

执行结果如下:

Tom 男 20
Tom 男 25

可以看到,如果我们不给age形参传值,age会默认为20。如果我们给age传值,age会使用我们传递的数值。

注意:默认值参数必须放在最右边,并且默认值最好是不可变对象并且只计算一次。

2.2.4.可变参数

有时我们无法确定函数所需的参数的数量,这个时候我们需要用到可变参数。

2.2.4.1.任意位置参数

任意位置参数可以接受任意数量的位置参数,并将其作为一个元组来表示。
任意位置参数通过在函数名前加上"*"来表示。例如:

def demo(*args):
    print(args)

demo()
demo(1)
demo(1, 2)

执行结果如下:

()
(1,)
(1, 2)
2.2.4.2.任意关键字参数

任意关键字参数可以接受任意数量的关键字参数,并将其作为一个字典来表示。
任意位置参数通过在函数名前加上"**"来表示。例如:

def demo6(**kwargs):
    print(kwargs)

demo6()
demo6(a=1)
demo6(a=1, b=3)

执行结果如下:

{}
{'a': 1}
{'a': 1, 'b': 3}
2.2.5.参数的混合使用

位置参数、默认值和可变参数可以同时在函数定义中出现。但是这些参数的混合使用要保证每一个形参都必须有值于其对应
一般来说,我们以位置参数、任意位置参数、默认值和任意关键字参数这样的顺序进行排列。

3.函数调用

函数调用是我们使用定义好的函数的过程。

这里我们要区别好函数定义和函数调用。

函数定义是一个静态的过程,定义函数的代码不会被执行。

函数调用是一个动态的过程。函数调用会先在内存中分配形参的空间,然后会将形参指向实参,之后会执行函数定义中的代码体,最后会返回计算结果并回收形参。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值