python-函数的使用(1)

1、函数的简介

  这里的函数和我们在数学中的f(x)比较相似,输入一个参数得到一个结果。当然,有的时候不需要参数。

  什么时候能用到函数呢?比如,有的时候,我们需要重复进行某一些操作,那么我们就可以把这一些操作打包,在需要的时候,调用这个函数就可以了。

  函数是一个对象,加括号才会执行函数。

2、函数的创建

以下格式

def 函数名(参数……):
	操作1
	操作2
	……
	(return

3、函数的参数

3.1 参数的简介

  函数是可以没有参数的,但是一般情况我们都是想要参数的。

  这里函数里面的参数叫做形参,我们调用函数时传入的参数叫做实参,实参和形参是对应的。

传参实际就是形参指针指向实参的过程。
  这样的话会导致改变形参的内容,实参跟随变化。避免这种情况,可以在传实参的时候创建副本(.copy())或者切片([:])。
参数的类型是不限制的,可以是任意类型的对象。

3.2 参数的传递方式

3.2.1 设置默认参数

  在定义函数时,可以给形参设置默认值,如果没有实参传入时,就会把默认值传递给它。

In [35]: def h(a=1,b=2):
    ...:     print('a=',a)
    ...:     print('b=',b)
    ...:

In [36]: h(0,0)
a= 0
b= 0

In [37]: h()
a= 1
b= 2

3.2.2 位置传参

就是按照形参的顺序传递参数,一般用的都是这个。

In [35]: def h(a=1,b=2):
    ...:     print('a=',a)
    ...:     print('b=',b)
In [38]: h(4,5)
a= 4
b= 5

3.3.3 关键字传参

  使用关键字来传递参数,这样的好处就是不需要记忆形参的顺序。

In [35]: def h(a=1,b=2):
    ...:     print('a=',a)
    ...:     print('b=',b)
In [39]: h(b=5,a=6)
a= 6
b= 5

3.3.4 位置、关键字混合传参

这时候必须把位置参数放在前面,否则就会报错。

In [35]: def h(a=1,b=2):
    ...:     print('a=',a)
    ...:     print('b=',b)
In [40]: h(17,a=8)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-40-8cde5f751228> in <module>()
----> 1 h(17,a=8)

TypeError: h() got multiple values for argument 'a'

In [41]: h(7,b=8)
a= 7
b= 8

In [42]: h(a=7,8)
  File "<ipython-input-42-6a8108aaaef8>", line 1
    h(a=7,8)
         ^
SyntaxError: positional argument follows keyword argument

4、不定长参数

  有时候我们可能不太清楚形参到底有几个,或者是有很多形参,我们只想传入两个,这时候就可以用到不定长参数。

def h(a,b,*c):
    print('a=',a)
    print('b=',b)
    print('c=',c)
h(1,2,3,4,5)
"""
a= 1
b= 2
c= (3, 4, 5)
"""

h(1,2)

"""
a= 1
b= 2
c= ()
"""

注意:

  • 不定长参数只能有一个。
  • 如果不定长参数没有放在最后一个,它后面的参数要用关键字传参,否则不知道怎么分配。
  • *形参只能接受位置参数,不能接受关键字参数。多个参数保存在元组中。
  • **形参可以接受关键字参数,以字典的形式存放。
  • **形参只能有一个,并且只能放在最后一个。
  • ‘*’处理的是位置参数,‘**’处理的是关键字参数

5、参数的解包

  这样实现了变量作为实参进行传递,但是变量的长度需要和参数个数对应。

5.1 解包列表、元组、集合

In [1]: def h(a,b,*c):
   ...:     print('a=',a)
   ...:     print('b=',b)
   ...:     print('c=',c)
   ...: m=[1,2,3,4,5]    
   ...: h(*m)
   ...:
   ...:
a= 1
b= 2
c= (3, 4, 5)

5.2 解包字典

In [2]: def h(a,b,c):
   ...:     print('a=',a)
   ...:     print('b=',b)
   ...:     print('c=',c)
   ...: m={'a':1,'b':3,'c':6}
   ...: h(**m)
   ...:
   ...:
a= 1
b= 3
c= 6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值