Python-07-Function 函数的定义和使用
定义函数
说明
关键字 def
引入一个函数 定义。
它必须后跟函数名称和带括号的形式参数列表。
构成函数体的语句从下一行开始,并且必须缩进。
函数体的第一个语句可以(可选的)是字符串文字;这个字符串文字是函数的文档字符串或 docstring 。(有关文档字符串的更多信息,请参阅 文档字符串 部分)有些工具使用文档字符串自动生成在线或印刷文档,或者让用户以交互式的形式浏览代码;在你编写的代码中包含文档字符串是一种很好的做法,所以要养成习惯。
函数的 执行 会引入一个用于函数局部变量的新符号表。更确切地说,函数中的所有变量赋值都将值存储在本地符号表中;而变量引用首先在本地符号表中查找,然后在封闭函数的本地符号表中查找,然后在全局符号表中查找,最后在内置符号表中查找。所以全局变量不能直接在函数中赋值(除非使用 global 命名),尽管可以引用它们。
在函数被调用时,实际参数(实参)会被引入被调用函数的本地符号表中;因此,实参是通过 按值调用 传递的(其中 值 始终是对象 引用 而不是对象的值)。
当一个函数调用另外一个函数时,将会为该调用创建一个新的本地符号表。
例子
'''
desc: Fib 数列
author: binbin.hou
'''
# 定义函数
def fib(n):
"""Get the fib series of number n."""
a,b = 0,1
result = []
while(a >> def my_function():
... """Do nothing, but document it.
...
... No, really, it doesn't do anything.
... """
... pass
...
>>> print(my_function.__doc__)
Do nothing, but document it.
No, really, it doesn't do anything.
函数标注
函数标注是关于用户自定义函数中使用的类型的完全可选元数据信息。
函数标注 以字典的形式存放在函数的 __annotations__
属性中,并且不会影响函数的任何其他部分。
形参标注的定义方式是在形参名称后加上冒号,后面跟一个表达式,该表达式会被求值为标注的值。
返回值标注的定义方式是加上一个组合符号 ->
,后面跟一个表达式,该标注位于形参列表和表示 def 语句结束的冒号之间。
例子
下面的示例有一个位置参数,一个关键字参数以及返回值带有相应标注:
>>> def f(ham: str, eggs: str = 'eggs') -> str:
... print("Annotations:", f.__annotations__)
... print("Arguments:", ham, eggs)
... return ham + ' and ' + eggs
...
>>> f('spam')
Annotations: {'ham': , 'return': , 'eggs': }
Arguments: spam eggs
'spam and eggs'
个人理解
类似于 java 中的注解吧,提供一些对象的元信息。
个人收获
Python 作为一款非常受欢迎的语言,在对设计者和使用者的友好程度上是非常值得肯定的。
至少是优于 java/C/C++/C# 的。
提供编写和阅读的便利性,正式高级语言的很大的一个意义。