关于python的函数

在说函数之前,我先说一个前两篇博客没有说过的数据类型:集合

集合

集合--是一个天生去重的数据类型,是无序的,所以无法通过下标来取值

s = set()#定义一个和集合
定义集合与定义list、dict、tuple没什么区别,一样的简单
集合也有几个方法
添加值(增).add方法

使用这种方法可以给集合添加值,注意的是如果你添加的元素是集合中存在的,打印时集合会自动去重;

删除值(删).remove方法

这样可以直接删除集合中指定的元素

删除还有个方法.pop方法,这种方法是可以随机删除一个集合中的值,这种方法不需要参数,如果你非要给他一个参数,执行代码是会报错;

关于集合就这么多

下面咱们来说一下函数

函数

函数就是把一堆代码组合在一起,在使用时可以随意调用的一个整体;函数、方法、功能都是函数;

def xxx(函数名)()就是定义函数的关键字;如

这样就是定义了一个函数名称

函数的作用就是提高代码的复用性

def()括号内是参数,在调用的时候直接加入调用参数,就不用更改代码了,这个参数可以是一个也可以是多个

函数中的参数分为形参和实参

形参--函数定义时定义的参数就是形参如,就像上图中的函数的参数,def hello(file_name,content)其中file_name,content就是形参;

实参--调用函数是所写的参数就是实参;如上图中调用hello这个函数时所传的两个参数('tlx.txt','内容’);

这段代码中的file_name和content这两个参数是非常重要的

 file_name这个参数是位置参数,在定义函数时,如果你写的函数需要参数并进行了定义,那么这个位置参数就是必填的参数;

content这个参数是一个默认值参数,在形参中直接指定的值就是默认值参数,属于非必填参数,如果调用参数时,实参没有传值,那么就会使用默认值参数,如果实参有传值,那么就用实参传的值

返回值

如果想获取函数的结果,那么就要用return
如果函数没有写return,返回值为None,return不是必须要写的,需要获取到的函数返回结果再写。return 立即结束函数,在函数中如果遇到return,函数将会立即结束

就像这个函数,return只需要返回真或假就可以了

全局变量和局部变量

 局部变量---就是在局部生效的,出了这个变量的作用域,这个变量就失效了

这段代码中的变量就是局部变量,只作用与这个函数中,出了这个函数这个变量就失效了,对于其他函数或代码不会有任何影响

全局变量---意思就是在整个程序里面都生效的,在程序最前面定义的都是全局变量,全局变量如果要在函数中修改的话,需要加global关键字声明,如果是list、字典和集合的话,则不需要加global关键字,直接就可以修改。

就行这段代码,a=100是一个全局变量,但是在函数test中也有个变量a=5,如果代码中没有global声明,那么这两个变量就会作用于不同的地方,但是这里进行了声明就不一样,声明候全局变量就会被修改,从原来的a=100变成了a=5,所以这段代码的返回结果是10;

可变参数
如果函数会有多个参数就会用的*args,这个参数是非必填参数,除了必填参数与默认值参数以外,其他的参数都会放到args中,args中存的是一个元组,如果想去相应的值,可以通过下标进行取值;
def test(a,b=1,*args):
  print('a',a)
  print('b',b)
  print('args',args)
  test('hahaha',2,'123','456','789')#位置调用
args就是可变参数,可以存多个值,想存几个就传几个值,会以元组方式进行保存

关键字数,
直接指定参数,进行调用,就是关键字调用,不必理会参数的具体位置
def test(a,b=1,*args):
  print('a',a)
  print('b',b)
  print('args',args)
  # test('hahaha',2,'123','456','789')#位置调用
  test(b=5,a=10)
不用管其位置在什么地方,这样是可以的,但是这里不能再给*args传值,如果传值将会报错
如果写成这样:
def test(a,b=1,*args):
  print('a',a)
  print('b',b)
  print('args',args)
  #test('hahaha',2,'123','456','789')
  t = [1,2,3]
test()#关键字调用,不用管其位置在什么地方
这样的话就会将t的值按顺序传参给必填参数、默认值参数和args,都是一一对应的
#关键字参数
def test2(**kwargs):
  print(kwargs)
  test2(name = 'hhh',set = 'nv')
这种方式就是关键字参数,非必填参数,会以字典形式传值,一般使用的时候较少,只有参数特别多的情况下才会使用得到;

 

关于函数就只讲这么多,希望大家可以记住,可能我写的不是很清晰,但是大体上还是说明白了,希望对你的学习有用。

 


posted on 2018-01-11 15:12  响马_800  阅读(94)  评论(0)    收藏  举报

导航