函数
函数可以通过关键字 def
来定义。这一关键字后跟一个函数的标识符名称,再跟一对圆括号,其中可以包括一些变量的名称,再以冒号结尾,结束这一行。随后而来的语句块是函数的一部分。
def print_max(a, b):
if a > b:
print(a, 'is maximum')
elif a == b:
print(a, 'is equal to', b)
else:
print(b, 'is maximum')
用法很简单。
global 语句
x = 50
def func():
global x
print('x is', x)
x = 2
print('Changed global x to', x)
func()
print('Value of x is', x)
global 语句用以声明 x 是一个全局变量
x is 50
Changed global x to 2
Value of x is 2
形参默认值
用法与C类似
def say(message, times=1):
print(message * times)
注意
只有那些位于参数列表末尾的参数才能被赋予默认参数值,意即在函数的参数列表中拥有默认参数值的参数不能位于没有默认参数值的参数之前。
这是因为值是按参数所处的位置依次分配的。举例来说,def func(a, b=5) 是有效的,但 def func(a=5, b) 是无效的。
关键字参数
这样做有两大优点——其一,我们不再需要考虑参数的顺序,函数的使用将更加容易。其二,我们可以只对那些我们希望赋予的参数以赋值,只要其它的参数都具有默认参数值。
def func(a, b=5, c=10):
print('a is', a, 'and b is', b, 'and c is', c)
func(3, 7)
func(25, c=24)
func(c=50, a=100)
可变参数
def total(a=5, *numbers, **phonebook):
print('a', a)
#遍历元组中的所有项目
for single_item in numbers:
print('single_item', single_item)
#遍历字典中的所有项目
for first_part, second_part in phonebook.items():
print(first_part,second_part)
print(total(10,1,2,3,Jack=1123,John=2231,Inge=1560))
('a', 10)
('single_item', 1)
('single_item', 2)
('single_item', 3)
('Inge', 1560)
('John', 2231)
('Jack', 1123)
None
当我们声明一个诸如 *param
的星号参数时,从此处开始直到结束的所有位置参数(Positional Arguments)都将被收集并汇集成一个称为“param”的元组(Tuple)。
类似地,当我们声明一个诸如 **param
的双星号参数时,从此处开始直至结束的所有关键字参数都将被收集并汇集成一个名为 param 的字典(Dictionary)。
return 语句
def maximum(x, y):
if x > y:
return x
elif x == y:
return 'The numbers are equal'
else:
return y
print(maximum(2, 3))
输出:3
提示:有一个名为 max 的内置函数已经实现了“找到最大数”这一功能,所以尽可能地使用这一内置函数。
如果 return 语句没有搭配任何一个值则代表着 返回 None。
None 在 Python 中一个特殊的类型,代表着虚无。举个例子, 它用于指示一个变量没有值,如果有值则它的值便是 None(虚无)。
每一个函数都在其末尾隐含了一句 return None,除非你写了你自己的 return 语句。
def some_function():
pass
print(some_function())
输出:None
Python 中的 pass 语句用于指示一个没有内容的语句块。
DocStrings文档字符
当程序实际运行时,我们甚至可以通过一个函数来获取文档!
def print_max(x, y):
'''Prints the maximum of two numbers.
The two values must be integers.'''
x = int(x)
y = int(y)
if x > y:
print(x, 'is maximum')
else:
print(y, 'is maximum')
print_max(3, 5)
print(print_max.__doc__)
输出:
(5, 'is maximum')
Prints the maximum of two numbers.
The two values must be integers.
文档字符串约定:
函数的第一行逻辑行中的字符串
一串多行字符串
第一行以某一大写字母开始,以句号结束。
第二行为空行
第三行开始是任何详细的解释说明
可以通过使用函数的 doc(注意其中的双下划綫)属性(属于函数的名称)来获取函数 print_max 的文档字符串属性。
自动化工具可以以这种方式检索你的程序中的文档。因此,我强烈推荐你为你编写的所有不平凡的函数配以文档字符串。你的 Python 发行版中附带的 pydoc 命令与 help() 使用文档字符串的方式类似。
摘自: