13.函数

python函数

一、python函数和shell中的函数性质一样。语法略有不同。

函数就是可以将一些命令封装起来,然后命名,我们可以通过调用函数名称来使用函数中的内容。

函数的优点:

   1.减少代码的重复性。

   2.便捷。

   3.可扩展性强。

格式:

   def 函数名():

      执行命令

 

例子:

   #!/usr/bin/env python

   def abc():

      print ('hello world')

   abc()

 

 

二、return

特点:

   1.返回一个值

   2.执行了return后续的命令就不在执行 。

 

例子:

#!/usr/bin/env python

def abc():

   print ('hello world')

   return 'abc'

 

x = abc()

 

 

当我们将abc()函数赋值给一个变量x。abc函数依然会执行。

但是abc()函数不会将其内容赋值给x。x的值是空。只有我们用return返回一个值。x才会有值。

 

三、传参数

第一种传参数:位置参数调用

#!/usr/local/bin/python

def a(x,x1):

   print (x,x1)

a(1,2)

a(2,1)

 

[root@a ~]# python a.py

1 2

2 1

 

解释:x,x1 我们叫做形参。

     1,2这些值我们称为实参。

   我们传值的时候,形参和实参的位置是对应的。实参的数量不能多也不能少于形参。否则会报错。

 

 

第二种传参数:关键字传参数。

 

 

#!/usr/local/bin/python

def a(x,x1):

   print (x,x1)

a(x1=2,x=1)

  

我们使用这种方法传参的时候,与形参的顺序无关。

 

第三种:当传参数时,关键字传参和位置传参同时有的时候。

遵循原则就是:

      所有位置参数必须在关键字参数前边。

     

 

1.例子1:

#!/usr/local/bin/python

def a(x,y):

   print (x,y)

a(1,y=2)

     

这个例子结果是正确的。

满足了位置参数在关键字参数前边。也是按照实参和形参的位置对应的规则。

 

2.错误例子:

def a(x,y):

   print (x,y)

a(y=2,1)

 

这样执行就报错了。虽然这样我们分别给x和y赋值了,但是位置参数没有在关键字参数前边。

 

3.错误例子2

   def a(x,y):

      print (x,y)

   a(2,x=1)

 

这样也会报错。虽然位置参数在关键字参数前边。但是2赋值给了x。后边又定义了一下x。所以报错。

 

四、默认参数

   #!/usr/bin/env python

   def a(x,y=2):

       print (x,y)

   a(1)

[root@a ~]# python a.py

1 2

 

我们在形参处直接给y赋值。如果调用函数时,没有赋值。y就是默认值2.如果赋值了y就是新赋值的数值了。

def a(x,y=2):

   print (x,y)

a(1,3)

[root@a ~]# python a.py

1 3

 

作用:

   比如连接数据库的函数,如果输入了端口或是密码。我们就接受,否则按照默认值执行。

 

 

 

五、参数组

 

   前边提过,传参数的时候,实参的个数不能多于或少于实参的个数。或者说实参的个数不确定的时候。这时候我们就用到了参数组。

 

例子1:

 

   def abc(*args):  #定义了参数组。*代表args接受的参数个数不固定。

      print (args)

   abc(1,2,3,4,5)     #传递了很多实参,个数不固定。

  

   [root@a ~]# python a.py

   (1, 2, 3, 4, 5)

  

例子2:

 

2.接收字典

 

def a(**kwargs):

   print (kwargs)

a(x=1,y=2,z=3)

a(**{'name':'xiaoming','age':22})

 

a(x=1,y=2,z=3)

这种方式我们通过关键字传参数。**kwargs会自动将传递过来的"关键字"参数转变成字典。

 

a(**{'name':'xiaoming','age':22})

这种方式字典前边必须带**,否则会报错。

猜你喜欢

转载自www.cnblogs.com/pangbing/p/9125844.html