作者 | Aditya Kousik Cotra

译者 | IT外文选刊是时候编写结构合理的程序了。

函数是复用程序代码的有效方法。使用函数的好处是可以节省空间,而且我们选择的名称也使我们的程序易于阅读。函数可以在没有输入的情况下定义函数,也不一定要产生输出。

Python中内置的函数有很多,我们也可以自己创建函数。

在Python中,函数是用def关键字来定义的。

>>> def myfunc():

print("Python functions are easy to learn.")

>>> myfunc() #calling function

'Python functions are easy to learn.'

函数主要是帮助你结构化你的程序。最好是把长程序分解成函数,每个函数都有自己的目的,使其结构透明化,就像这样:

data = extract_data(source)

results = analyze(data)

present(results)

适当地使用函数,使程序的可读性和可维护性更强。此外,在对一个函数进行修改的时候,不用担心程序的其他部分,也更容易进行修改。

在这篇文章中,我们将讨论五个话题,我认为了解函数是很重要的。这些话题将帮助你更好地理解函数。

1. 变量的作用域

函数定义为变量创建新的局部作用域。当在函数体内部分配一个新变量时,该变量只在函数内部定义。变量在函数外部是不可见的。因此,我们在定义变量时可以选择任意名称,而不需要关注函数外部的变量。

举例来说:

>>> x = 10

>>> def myfunc():

x = 5

在上述函数中,变量x在函数外赋值为10,在函数内赋值为5。现在,当我们在函数外把x打印时:

>>> x

10

变量x在函数外部不会发生变化,因为在函数内部定义的x的范围只限于函数本身。

2. 参数的类型

参数,是用来向函数传递信息的。有两种类型的参数:关键字参数:在函数调用中以标识符(key1 = value1 )为前缀的参数,或者在字典中以**为前缀的值传递。

ratio(numerator=10, denominator=4)

ratio(**{'numerator':10,'denominator':4})位置参数:非关键字参数的参数。这个值被直接传递到函数中,其位置代表函数中的一个变量。它也可以作为一个以*为前缀的迭代元素传递。

ratio(10,4)

ratio(*(10,4))

3. 函数可作为参数

有趣的是,我们还可以将函数作为参数传递给函数。例如,我们可以将内置函数 len() 或用户定义的函数 vowel_present() 作为参数传递给另一个函数:

>>> sent = ['Python', 'functions', 'are', 'amazing']

>>> def execute_func(prop):

return [prop(word) for word in sent]

>>> execute_func(len)

[6, 9, 3, 7]

>>> def vowel_present(word):

... for x in word:

if x in 'aeiou':

return True

return False

>>> execute_func(vowel_present)

[True, True, True, True]

4. 参数类型检查

Python函数不要求我们指定输入参数的类型。所以在执行函数之前,有必要检查一下输入变量的类型。

def is_vowel(char): #Returns True if char is vowel, False otherwise.

if char in 'aeiou':

return True

else:

return False

>>> is_vowel(5)

False

例如,在上面的函数中,没有指定数字的数据类型,但我们希望变量的类型为长度为1的str类型。但是,如果我们传递一个整数变量,函数执行时返回False。

为了避免执行和报错,我们可以使用这样的assert函数。

def is_vowel(char):

assert(isinstance(char, str)) #raises error if not satisfied

assert(len(char)==1) #raises error if string not of length 1

if char in 'aeiou':

return True

else:

return False

如果assert语句失败,会产生一个错误,函数停止执行。

5. 函数文档

好的做法是给函数加文档,描述它的目的,并使用函数定义顶部的docstring来提供文档,就像这样:

def is_vowel(char):

'''Takes a string input of length one and returns True if vowel, False otherwise'''

assert(isinstance(char, str))

assert(len(char)==1)

if char in 'aeiou':

return True

else:

return False

任何函数的Docstrings都可以通过运行帮助函数找到。它也可以使用属性__doc__来检索。

>>> help(is_vowel)

Help on function is_vowel in module __main__:

is_vowel(char)

Takes a string input of length one and returns True if vowel, False otherwise

>>> is_vowel.__doc__

'Takes a string input of length one and returns True if vowel, False otherwise'

你可以试着运行help(xxx)来获取xxx库的docstring。

在这篇文章中,我们主要讨论了函数的应用以及它们如何帮助构建结构化的程序。在后续文章中,我们将讨论Python模块以及它们是如何帮助程序高效运行的。

外文链接:https://medium.com/@cotra.ak/5-things-to-know-about-python-functions-52565919d748​medium.com

版权声明:

本译文仅用于学习、研究和交流目的,欢迎非商业转载。转载请注明出处、译者和IT外文选刊的完整链接。

更多优质IT外文在“IT外文选刊”(公众号)

pythonexecute函数功能_关于Python函数的5件事相关推荐

  1. python函数转换_将Python函数转换为PL/Python函数

    我编写了几个python函数来对数据集中的连续变量进行幂变换.第一个函数基本上查找每个列的数据类型,并返回数据类型的dict以及相应的列名称作为值.在 第二个函数现在接受数据类型和列名的dict,并获 ...

  2. python函数笔记_初学Python函数的笔记整理

    定义 返回单值 def my_abs(x): if x >= 0: return x else: return -x 返回多值 返回多值就是返回一个tuple import math def m ...

  3. python用于获取用户输入的函数是_在Python函数中,用于获取用户输入的是( )...

    在Python函数中,用于获取用户输入的是( ) 答:input() 中国大学MOOC:\"骨质疏松症的特征是是以骨量减少.骨的微观结构退化,致使发生的严重后果是\"; 答:\&q ...

  4. python 定义函数方法,python中函数如何定义?python函数的调用方法介绍

    本篇文章给大家带来的内容是关于python中函数如何定义?python函数的调用方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 函数的概念,函数是将具有独立功能的代码块 ...

  5. python randint函数用法_使用random函数实现randint函数的功能

    首先说明一下 random函数是random模块中的一个函数 首先要导入random模块 import random random函数的功能 #生成某一范围(0-1)内的随机小数 print(rand ...

  6. turtle 函数 方法_学python第十一节:turtle深入 了解

    学python第十一节:深入分析turtle Turtle是一个直观有趣的图形绘制函数. 这节课对turtle的以下几点进行补充: 在蟒蛇绘制代码中提到过import 库引用保留字的函数,是补充pyt ...

  7. python函数复用_【python学习-4】可复用函数与模块

    1.自定义函数 自定义函数格式如下: def (参数列表):return #!/usr/bin/python#定义函数,打印数字1~5 defprintNum5():#range函数,生成列表集合,有 ...

  8. python函数实例化_用Python实例化函数

    python函数实例化 In terms of Mathematics and Computer science, currying is the approach/technique by whic ...

  9. python小老鼠编程_成都python函数学习教程,Python编写课程

    1.urllib2/urllib实现urllib2和urllib是Python中的两个内置模块,要实现HTTP功能,实现方式是以urllib2为主,urllib为辅.1.1首先实现一个完整的请求与响应 ...

最新文章

  1. 056_Avatar头像
  2. GOF23种设计模式(Design Pattern)总结
  3. JavaScript No Overloading 函数无重载之说
  4. Eclipse创建JavaWeb工程
  5. JDK 15 JAVA 15的新特性展望
  6. 用matlab算24点小游戏,24点游戏的Matlab程序
  7. MXNet——symbol
  8. 【Spring】Spring事务失效的 8 大原因
  9. CodeIgniter的缓存小记
  10. 电池电量检测方法-库仑计-基于LTC2941
  11. win10 桌面背景最短切换时间由1分钟改为10秒
  12. 计算机组装中如何看硬件型号,如何查看主板型号?(三种方法!)
  13. 分析:G20相争 IMF得利
  14. plotly绘制简单图形5--饼形图附加
  15. Vmware Ubuntu虚拟机提示:无法连接虚拟设备 sata0:1,因为主机上没有相对应的设备,解决办法
  16. arm云教室服务器_便宜又好用!云上ARM尝鲜体验
  17. 结队-贪吃蛇-项目进度
  18. 山东财经大学python期末考试题型_山东财经大学2012012学年第二学期期末试题
  19. Warning FailedScheduling 29s (x2 over 29s) default
  20. htc x920e刷android7.0,HTC X920e (Butterfly)一键刷机图文教程

热门文章

  1. Celery 学习笔记(2)- 定时任务
  2. 计算机主要技术指标与性能指标
  3. 伪元素中content的用法详解
  4. OLTP、OLAP、HTAP之间的区别
  5. 【计算机网络】浅析UDP协议
  6. K12867 购买玩具
  7. IP有效载荷压缩协议(IPComp)
  8. innerHTML属性
  9. 深入理解Access和Trunk端口的报文收发规则
  10. Mysql数据库Data目录迁移的方法详解