函数python
函数是指可重复使用的程序片断。它们容许你为某个代码块赋予名字,容许你经过这一特殊的名字在你的程序任何地方来运行代码块,并可重复任何次数,这就是所谓的调用(calling)函数。咱们已经使用了不少内置的函数,例如 len 和 range。函数
案例(保存为function1.py)spa
def say_hello(): # 该块属于这一函数 print('hello world') # 函数结束 say_hello() # 调用函数 say_hello() # 再次调用函数
函数参数在定义函数时给定的名称称做“形参”(Parameters),在调用函数时你所提供给函数的值称做“实参”(Arguments)。code
案例(保存为function_param.py):blog
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') # 直接传递字面值 print_max(3, 4) x = 5 y = 7 # 以参数的形式传递变量 print_max(x, y)
输出:作用域
$ python function_param.py 4 is maximum 7 is maximum
局部变量it
当你在一个函数的定义中声明变量时,它们不会以任何方式与身处函数以外但具备相同名称的变量产生关系,也就是说,这些局部变量只存在于函数这一局部(local),这些被称为变量的做用域。变量的做用域是它们被定义的块,从定义它们的名字的定义点开始。
io
案例(保存为 function_local.py):function
x = 50 def func(x): print('x is', x) x = 2 print('Changed local x to', x) func(x) print('x is still', x)
输出:class
$ python function_local.py x is 50 Changed local x to 2 x is still 50
global语句
若是你想要给一个程序顶层的变量赋值,那么你必须告诉python这一变量并不是局部的,并且全局的(global)。
案例 (保存为 function_global.py):
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)
结果为:
$ python function_global.py x is 50 Changed global x to 2 Value of x is 2
默认参数值
对于一些函数来讲,你可能但愿使一些参数可选并使用默认的值,以免用户不需为他们提供值得状况。默认参数值能够有效解决这一状况,你能够 经过在函数定义时附加一个赋值运算符(=)来为参数指定默认参数值。要注意,默认参数值应该是常数。更确切的说,默认参数值应该是不可变的。
案例(保存为 function_default.py):
def say(message, times=1): print(message * times) say('Hello') say('World', 5)
输出:
$ python function_default.py
Hello
WorldWorldWorldWorldWorld
关键字参数
若是你有一些具备不少参数的函数,而你又但愿只对其中的一些进行指定,那么你能够经过命名它们来给这些参数赋值--这就是关键字参数。
案例(保存为function_keyword.py):
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)
输出:
$ python function_keyword.py a is 3 and b is 7 and c is 10 a is 25 and b is 5 and c is 24 a is 100 and b is 5 and c is 50
可变参数
有事你可能想定义的函数里面可以有任意数量的变量,也就是参数数量是可变的,这能够经过使用星号来实现(案例保存为 function_varargs.py):
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))
输出:
$ python function_varargs.py a 10 single_item 1 single_item 2 single_item 3 Inge 1560 John 2231 Jack 1123 None
有点难理解,慢慢品呵呵
return语句
return语句能够用于从函数中返回,也就是中断函数。咱们也能够选择在中断函数时从函数中返回一个值。
案例(保存为 function_return.py):
def maximum(x, y): if x > y: return x elif x == y: return 'The numbers are equal' else: return y print(maximum(2, 3))
输出:
$ python function_return.py 3
要注意到若是return语句没有搭配任何一个值则表明着返回None。None在Python中是一个特殊的类型,表明着虚无。