加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

10分钟学会 Python 函数基本常识

发布时间:2019-07-19 04:17:45 所属栏目:移动互联 来源:芒果教你学编程
导读:一、函数基本 简朴地说,一个函数就是一组Python语句的组合,它们可以在措施中运行一次或多次运行。Python中的函数在其他说话中也叫做进程或子例程,那么这些被包装起来的语句通过一个函数名称来挪用。 有了函数,我们可以在很洪流平上镌汰复制及粘贴代码
副问题[/!--empirenews.page--]

 一、函数基本

简朴地说,一个函数就是一组Python语句的组合,它们可以在措施中运行一次或多次运行。Python中的函数在其他说话中也叫做进程或子例程,那么这些被包装起来的语句通过一个函数名称来挪用。

10分钟学会 Python 函数基本常识

有了函数,我们可以在很洪流平上镌汰复制及粘贴代码的次数了(信托许多人在刚开始时都有这样的体验)。我们可以把沟通的代码可以提炼出来做成一个函数,在必要的处所只必要挪用即可。那么,这样就进步了代码的复用率了,整体代码看起来较量简洁,没有那么痴肥了。

函数在Python中是最根基的措施布局,用来最大化地让我们的代码举办复用;与此同时,函数可以把一个错综伟大的体系支解为可打点的多个部门,简化编程、代码复用。

接下来我们看看什么是函数,及函数该怎样界说。有两种方法可以举办函数的界说,别离是def及lambda要害字。

1. 函数界说

先总结一下为什么要行使函数?

代码复用最大化及最小化冗余代码;进程解析(拆解)。把一个伟大的使命拆解为多个小使命。

函数界说的语法为:

  1. def func_name(arg1, arg2, arg3, ..., argN):  
  2. statement  
  3. return value 

按照上面界说,可以简朴地描写为:Python中的函数是具有0个或多个参数,具有多少行语句而且具有返回值(返回值无关紧要)的一个语句块(留意缩进)。

那么我们就界说一个较量简朴的函数,该函数没有参数,进入ipython交互式情形:

  1. In[1]: def hello(): 
  2. ...: print('Leave me alone, the world')  
  3. ...: 

挪用(执行)该函数:

  1. In[2]: hello() 
  2. Leave me alone, the world 

我们发明hello()函数并没有return语句,在Python中,假如没有显式的执行return语句,那么函数的返回值默以为None。

我们说过,界说函数有两种情势,其它一种情势是行使lambda来界说。行使lambda界说的函数是匿名函数,这个我们在后头的内容举办讲授,这里临时不表。

二、函数参数

界说函数的时辰,我们把参数的名字和位置确定下来,函数的接口界说就完成了。对付函数的挪用者来说,只必要知道怎样转达正确的参数,以及函数将返回什么样的值就够了,函数内部的伟大的逻辑被封装起来,挪用者无需相识。

Python的函数界说很是简朴,但机动度却很是大。除了正常界说的必选参数外,还可以行使默认参数、可变参数和要害字参数,使得函数界说出来的接口,不单能处理赏罚伟大的参数,还可以简化挪用者的代码。

1. 默认参数

默认参数使得API简捷,但不失机动性。当一个参数有默认值时,挪用时假如不转达此参数时,会行使默认值。

  1. def inc(init, step=1): 
  2. return init + step 
  3. # 挪用一下这个函数 
  4. >>> inc(3) 
  5. >>> inc(3, 2) 

默认参数有一个坑,就长短默认参数要放到默认参数的前面(否则Python的表明器会报语法错误)。应承有多个默认参数,但默认参数必要放在参数列表的最后头。

  1. def append(x, lst=[]): 
  2. return lst.append(x) 

此函数有题目。(函数中的形参是全局变量?lst在append函数中叫lst,但在全局浸染域中,我们不知道lst详细叫什么名字。)

修改之后的函数为:

  1. def append(x, lst=None): 
  2. if lst is None: 
  3. lst = [] 
  4. lst.append(x) 
  5. return lst 

凡是来说,当默认参数是可变的时辰,必要出格留意浸染域的题目,我们必要上述的能力(不行变的数据范例是值转达,可变的数据范例是引用转达。)。今朝可变的工具为list,dict,set,bytearray。

默认参数很有效,但行使不妥,也会掉坑里。默认参数有个最大的坑,演示如下:

# 先界说一个函数,传入一个list,添加一个END再返回

  1. def add_end(L=[]): 
  2. L.append('END') 
  3. return L 

当我们正常挪用时,功效好像不错:

  1. >>> add_end([1, 2, 3]) 
  2. [1, 2, 3, 'END'] 
  3. >>> add_end(['x', 'y', 'z']) 
  4. ['x', 'y', 'z', 'END'] 

当我们行使默认参数挪用时,一开始功效也是对的:

  1. >>> add_end() 
  2. ['END'] 

可是,再次挪用add_end()时,功效就差池了:

  1. >>> add_end() 
  2. ['END', 'END'] 
  3. >>> add_end() 
  4. ['END', 'END', 'END'] 

缘故起因表明如下:

Python函数在界说的时辰,默认参数L的值就被计较出来了,即[],由于默认参数L也是一个变量,它指向工具[],每次挪用该函数,假如改变了L的内容,则下次挪用时,默认参数的内容就变了,不再是函数界说时的[]了。

以是,界说默认参数要紧记一点:默认参数必需指向稳固工具!

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读