Python基础教程学习第六日:抽象

抽象

函数

函数使用def语句来定义和创建,使用return从函数中返回值。return后也可以不加任何值,只起到结束函数的作用。

文档化函数

>>> def square(x):
        'Calculates the square of the number x.'
        return x*x
>>> square.__doc__
'Calculates the square of the number x.'
>>> print(square(5))
25

参数

字符串、数字和元组等是不可变的,因此在函数中作为参数也是无法被修改的,但是用列表等来作为参数,是可以被修改的。

>>> def change(n):
        n[0] = 'AA'
>>> name = ['AB','BB']
>>> change(name)
>>> name
['AA', 'BB']

关键字参数

>>> def hello_1(greeting, name):
        print('%s, %s!' %s (greeting, name))
>>> def hello_2(name, greeting):
        print('%s, %s!' %s (name, greeting))
>>> hello_1('Hello', 'world')
Hello, world!
>>> hello_2('world', 'Hello')
Hello, world!

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

关键字参数可以明确的给某个参数提供值,这点在函数定义时为参数提供默认值时尤为重要。

收集参数

在定义函数时,在括号里的参数前面加上*号,表示“收集其余的位置参数”的含义,并作为元组打印:

>>> def print_params_2(title, *params):
        print(title)
        print(params)
>>> print_params_2('Params:', 1, 2, 3)
Params:
(1, 2, 3)

如果没有提供任何共收集的元素,params就是个空元组。

也可以收集关键字参数,在参数前使用**即可:

>>> def print_params_3(**params)
        print(params)
>>> print_params_3(x=1, y=2, z=3)
{'z': 3, 'x': 1, 'y': 2}

注意到这里返回的不是元组而是字典。

值得注意的是,在调用函数时也可以使用或者*来传递元组或者字典。

作用域

函数内部的变量为局部变量,外部的变量为全局变量,如果要在函数内读取全局变量,可以使用globals()[‘parameter’]来获取,如:

>>> def combine(parameter):
        print(parameter + globals()['patameter'])
>>> parameter = 'berry'
>>> combine('Shrub')
Shrubberry

刚刚提到了,函数内部的变量为局部变量,如果想要将它作为全局变量并进行修改,则需要在函数内部声明其为全局变量:

>>> x = 1
>>> def change_global():
        global x 
        x = x + 1
>>> change_global()
>>> x
2

递归

即自己调用自己,如:

>>> def factorial(n)
        if n == 1:
            reuturn 1
        else:
            return n*factorial(n-1)

以上代码实现了阶乘的功能。除此之外还可以使用递归实现幂、二分查找等操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值