python的execute函数功能_关于Python函数的5件事

作者 | 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外文选刊”(公众号)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值