python基础_第六章_函数

函数

1 自定义函数

使用 def (表示定义函数)语句。

def hello(name):
	return 'Hello, ' + name + '!'

>>> print(hello('world'))
Hello, world!
>>> print(hello('Gumby'))
Hello, Gumby!

给函数编写文档

def square(x):
'Calculates the square of the number x.'
return x * x

访问函数文档

>>> square.__doc__
'Calculates the square of the number x.'

什么都不返回的函数不包含 return 语句,或者包含 return 语句,但没有在 return 后面指定值。

这里使用 return 语句只是为了结束函数:

def test():
	print('This is printed')
	return
	print('This is not')
>>> x = test()
This is printed
>>> print(x)
None #因为return后面没有指定返回内容,所以返回的是None

4 参数

关键字参数和默认值

def hello_1(greeting, name):
	print('{}, {}!'.format(greeting, name))
def hello_2(name, greeting):
	print('{}, {}!'.format(name, greeting))

>>> hello_1(name='world', greeting='Hello')
Hello, world!

>>> hello_2(greeting='Hello', name='world')
world, Hello!

像这样使用名称指定的参数称为关键字参数,主要优点是有助于澄清各个参数的作用。

关键字参数最大的优点在于,可以指定默认值。

def hello_3(greeting='Hello', name='world'):
	print('{}, {}!'.format(greeting, name))
	
>>> hello_3()
Hello, world!
>>> hello_3('Greetings')
Greetings, world!
>>> hello_3('Greetings', 'universe')
Greetings, universe!

5 作用域

>>> def foo(): x = 42
...
>>> x = 1
>>> foo()
>>> x
1

在这里,函数 foo 修改(重新关联)了变量 x ,但当你最终查看时,它根本没变。这是因为调用 foo 时创建了一个新的命名空间,供 foo 中的代码块使用。赋值语句 x = 42 是在这个内部作用域(局部命名空间)中执行的,不影响外部(全局)作用域内的 x 。在函数内使用的变量称为局部变量(与之相对的是全局变量)。参数类似于局部变量,因此参数与全局变量同名不会有任何问题

>>> def combine(parameter): print(parameter + external)
...
>>> external = 'berry'
>>> combine('Shrub')
Shrubberry
#警告 像这样访问全局变量是众多bug的根源。务必慎用全局变量。

重新关联全局变量(使其指向新值)是另一码事。在函数内部给变量赋值时,该变量默认为局部变量,除非你明确地告诉Python它是全局变量。

>>> x = 1
>>> def change_global():
...  global x #告知python这个是全局变量
...  x = x + 1
...
>>> change_global()
>>> x
2

6 递归

基线条件(针对最小的问题):满足这种条件时函数将直接返回一个值。

递归条件:包含一个或多个调用,这些调用旨在解决问题的一部分。

计算阶乘

def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值